@qite/tide-booking-component 1.4.91 → 1.4.93

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 (591) hide show
  1. package/.prettierrc +9 -9
  2. package/.vs/ProjectSettings.json +3 -3
  3. package/.vs/VSWorkspaceState.json +5 -5
  4. package/README.md +24 -24
  5. package/build/build-cjs/index.js +29559 -48609
  6. package/build/build-cjs/src/booking-product/components/age-select.d.ts +3 -3
  7. package/build/build-cjs/src/booking-product/components/amount-input.d.ts +5 -5
  8. package/build/build-cjs/src/booking-product/components/date-range-picker/calendar-day.d.ts +8 -8
  9. package/build/build-cjs/src/booking-product/components/date-range-picker/calendar.d.ts +14 -14
  10. package/build/build-cjs/src/booking-product/components/date-range-picker/index.d.ts +19 -16
  11. package/build/build-cjs/src/booking-product/components/dates.d.ts +8 -8
  12. package/build/build-cjs/src/booking-product/components/footer.d.ts +5 -5
  13. package/build/build-cjs/src/booking-product/components/header.d.ts +6 -6
  14. package/build/build-cjs/src/booking-product/components/icon.d.ts +5 -5
  15. package/build/build-cjs/src/booking-product/components/list-view.d.ts +2 -2
  16. package/build/build-cjs/src/booking-product/components/product.d.ts +4 -4
  17. package/build/build-cjs/src/booking-product/components/rating.d.ts +1 -1
  18. package/build/build-cjs/src/booking-product/components/rooms.d.ts +4 -4
  19. package/build/build-cjs/src/booking-product/constants.d.ts +1 -1
  20. package/build/build-cjs/src/booking-product/index.d.ts +4 -4
  21. package/build/build-cjs/src/booking-product/settings-context.d.ts +2 -1
  22. package/build/build-cjs/src/booking-product/types.d.ts +21 -21
  23. package/build/build-cjs/src/booking-product/utils/api.d.ts +2 -11
  24. package/build/build-cjs/src/booking-product/utils/price.d.ts +1 -10
  25. package/build/build-cjs/src/booking-wizard/api-settings-slice.d.ts +2 -3
  26. package/build/build-cjs/src/booking-wizard/components/icon.d.ts +5 -5
  27. package/build/build-cjs/src/booking-wizard/components/labeled-input.d.ts +13 -13
  28. package/build/build-cjs/src/booking-wizard/components/labeled-select.d.ts +16 -16
  29. package/build/build-cjs/src/booking-wizard/components/message.d.ts +4 -4
  30. package/build/build-cjs/src/booking-wizard/components/multi-range-filter.d.ts +6 -6
  31. package/build/build-cjs/src/booking-wizard/components/phone-input.d.ts +11 -11
  32. package/build/build-cjs/src/booking-wizard/components/print-offer-button.d.ts +11 -11
  33. package/build/build-cjs/src/booking-wizard/components/product-card.d.ts +3 -3
  34. package/build/build-cjs/src/booking-wizard/components/step-indicator.d.ts +1 -1
  35. package/build/build-cjs/src/booking-wizard/components/step-route.d.ts +3 -3
  36. package/build/build-cjs/src/booking-wizard/features/booking/api.d.ts +7 -26
  37. package/build/build-cjs/src/booking-wizard/features/booking/booking-self-contained.d.ts +3 -3
  38. package/build/build-cjs/src/booking-wizard/features/booking/booking-slice.d.ts +42 -100
  39. package/build/build-cjs/src/booking-wizard/features/booking/booking.d.ts +3 -3
  40. package/build/build-cjs/src/booking-wizard/features/booking/constants.d.ts +1 -8
  41. package/build/build-cjs/src/booking-wizard/features/booking/selectors.d.ts +479 -641
  42. package/build/build-cjs/src/booking-wizard/features/confirmation/confirmation.d.ts +2 -1
  43. package/build/build-cjs/src/booking-wizard/features/error/error.d.ts +2 -1
  44. package/build/build-cjs/src/booking-wizard/features/flight-options/flight-filter.d.ts +3 -3
  45. package/build/build-cjs/src/booking-wizard/features/flight-options/flight-option-flight.d.ts +2 -2
  46. package/build/build-cjs/src/booking-wizard/features/flight-options/flight-option.d.ts +4 -4
  47. package/build/build-cjs/src/booking-wizard/features/flight-options/flight-utils.d.ts +2 -9
  48. package/build/build-cjs/src/booking-wizard/features/flight-options/index.d.ts +2 -1
  49. package/build/build-cjs/src/booking-wizard/features/price-details/price-details-api.d.ts +1 -6
  50. package/build/build-cjs/src/booking-wizard/features/price-details/price-details-slice.d.ts +9 -14
  51. package/build/build-cjs/src/booking-wizard/features/price-details/selectors.d.ts +287 -302
  52. package/build/build-cjs/src/booking-wizard/features/product-options/none-option.d.ts +3 -3
  53. package/build/build-cjs/src/booking-wizard/features/product-options/option-booking-airline-group.d.ts +2 -2
  54. package/build/build-cjs/src/booking-wizard/features/product-options/option-booking-group.d.ts +6 -6
  55. package/build/build-cjs/src/booking-wizard/features/product-options/option-item.d.ts +5 -5
  56. package/build/build-cjs/src/booking-wizard/features/product-options/option-pax-card.d.ts +4 -4
  57. package/build/build-cjs/src/booking-wizard/features/product-options/option-pax-group.d.ts +7 -7
  58. package/build/build-cjs/src/booking-wizard/features/product-options/option-room.d.ts +5 -5
  59. package/build/build-cjs/src/booking-wizard/features/product-options/option-unit-group.d.ts +7 -7
  60. package/build/build-cjs/src/booking-wizard/features/product-options/option-units-card.d.ts +3 -3
  61. package/build/build-cjs/src/booking-wizard/features/product-options/options-form.d.ts +2 -1
  62. package/build/build-cjs/src/booking-wizard/features/room-options/index.d.ts +2 -1
  63. package/build/build-cjs/src/booking-wizard/features/room-options/room-utils.d.ts +6 -19
  64. package/build/build-cjs/src/booking-wizard/features/room-options/room.d.ts +6 -6
  65. package/build/build-cjs/src/booking-wizard/features/room-options/traveler-rooms.d.ts +3 -3
  66. package/build/build-cjs/src/booking-wizard/features/sidebar/index.d.ts +2 -2
  67. package/build/build-cjs/src/booking-wizard/features/sidebar/sidebar-flight.d.ts +2 -2
  68. package/build/build-cjs/src/booking-wizard/features/sidebar/sidebar-util.d.ts +2 -4
  69. package/build/build-cjs/src/booking-wizard/features/sidebar/sidebar.d.ts +23 -23
  70. package/build/build-cjs/src/booking-wizard/features/summary/summary-booking-option-pax.d.ts +1 -1
  71. package/build/build-cjs/src/booking-wizard/features/summary/summary-booking-option-unit.d.ts +1 -1
  72. package/build/build-cjs/src/booking-wizard/features/summary/summary-flight.d.ts +2 -2
  73. package/build/build-cjs/src/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +1 -1
  74. package/build/build-cjs/src/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +1 -1
  75. package/build/build-cjs/src/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +1 -1
  76. package/build/build-cjs/src/booking-wizard/features/summary/summary-slice.d.ts +3 -3
  77. package/build/build-cjs/src/booking-wizard/features/summary/summary.d.ts +2 -1
  78. package/build/build-cjs/src/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +75 -75
  79. package/build/build-cjs/src/booking-wizard/features/travelers-form/travelers-form-util.d.ts +4 -4
  80. package/build/build-cjs/src/booking-wizard/features/travelers-form/travelers-form.d.ts +2 -1
  81. package/build/build-cjs/src/booking-wizard/features/travelers-form/type-ahead-input.d.ts +11 -11
  82. package/build/build-cjs/src/booking-wizard/features/travelers-form/validate-form.d.ts +1 -8
  83. package/build/build-cjs/src/booking-wizard/index.d.ts +6 -6
  84. package/build/build-cjs/src/booking-wizard/settings-context.d.ts +2 -1
  85. package/build/build-cjs/src/booking-wizard/store.d.ts +22 -40
  86. package/build/build-cjs/src/booking-wizard/types.d.ts +239 -239
  87. package/build/build-cjs/src/booking-wizard/use-offer-printer.d.ts +8 -8
  88. package/build/build-cjs/src/content/components/LanguageSwitcher.d.ts +5 -5
  89. package/build/build-cjs/src/content/components/accordion.d.ts +4 -4
  90. package/build/build-cjs/src/content/components/breadcrumb.d.ts +7 -7
  91. package/build/build-cjs/src/content/components/faq.d.ts +4 -4
  92. package/build/build-cjs/src/content/components/gallery.d.ts +6 -6
  93. package/build/build-cjs/src/content/components/icon.d.ts +5 -5
  94. package/build/build-cjs/src/content/components/image-with-text.d.ts +18 -18
  95. package/build/build-cjs/src/content/components/slider.d.ts +5 -5
  96. package/build/build-cjs/src/content/featured-trips/types.d.ts +8 -8
  97. package/build/build-cjs/src/content/features/content-page/content-page-self-contained.d.ts +1 -1
  98. package/build/build-cjs/src/content/footer/types.d.ts +17 -17
  99. package/build/build-cjs/src/content/header/types.d.ts +20 -23
  100. package/build/build-cjs/src/content/image-card-grid/types.d.ts +8 -8
  101. package/build/build-cjs/src/content/image-with-text-section/types.d.ts +15 -15
  102. package/build/build-cjs/src/content/login/login-services.d.ts +1 -6
  103. package/build/build-cjs/src/content/login/types.d.ts +19 -19
  104. package/build/build-cjs/src/content/navbar/placeholderData.d.ts +2 -2
  105. package/build/build-cjs/src/content/navbar/types.d.ts +22 -22
  106. package/build/build-cjs/src/index.d.ts +1 -17
  107. package/build/build-cjs/src/qsm/components/date-range-picker/calendar-day.d.ts +7 -7
  108. package/build/build-cjs/src/qsm/components/date-range-picker/calendar.d.ts +18 -18
  109. package/build/build-cjs/src/qsm/components/date-range-picker/index.d.ts +5 -5
  110. package/build/build-cjs/src/qsm/components/double-search-input-group/index.d.ts +2 -2
  111. package/build/build-cjs/src/qsm/components/icon.d.ts +5 -5
  112. package/build/build-cjs/src/qsm/components/item-picker/index.d.ts +7 -7
  113. package/build/build-cjs/src/qsm/components/search-input/index.d.ts +9 -9
  114. package/build/build-cjs/src/qsm/components/search-input-group/index.d.ts +7 -7
  115. package/build/build-cjs/src/qsm/index.d.ts +1 -1
  116. package/build/build-cjs/src/qsm/store/qsm-slice.d.ts +58 -110
  117. package/build/build-cjs/src/qsm/store/qsm-store.d.ts +7 -20
  118. package/build/build-cjs/src/qsm/types.d.ts +59 -59
  119. package/build/build-cjs/src/search-results/components/filters/filters.d.ts +5 -5
  120. package/build/build-cjs/src/search-results/components/filters/flight-filters.d.ts +3 -3
  121. package/build/build-cjs/src/search-results/components/flight/flight-banner.d.ts +2 -2
  122. package/build/build-cjs/src/search-results/components/flight/flight-card.d.ts +1 -1
  123. package/build/build-cjs/src/search-results/components/flight/flight-leg.d.ts +1 -1
  124. package/build/build-cjs/src/search-results/components/flight/flight-path.d.ts +1 -1
  125. package/build/build-cjs/src/search-results/components/flight/flight-results.d.ts +2 -2
  126. package/build/build-cjs/src/search-results/components/flight/flight-search-context/index.d.ts +29 -29
  127. package/build/build-cjs/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +5 -5
  128. package/build/build-cjs/src/search-results/components/flight/flight-selection/independent-flight-selection.d.ts +1 -1
  129. package/build/build-cjs/src/search-results/components/flight/flight-selection/index.d.ts +2 -2
  130. package/build/build-cjs/src/search-results/components/flight/flight-selection/paired-flight-option.d.ts +1 -1
  131. package/build/build-cjs/src/search-results/components/flight/flight-selection/paired-flight-selection.d.ts +1 -1
  132. package/build/build-cjs/src/search-results/components/group-tour/group-tour-card.d.ts +3 -3
  133. package/build/build-cjs/src/search-results/components/group-tour/group-tour-results.d.ts +1 -1
  134. package/build/build-cjs/src/search-results/components/hotel/hotel-accommodation-results.d.ts +1 -1
  135. package/build/build-cjs/src/search-results/components/hotel/hotel-card.d.ts +2 -2
  136. package/build/build-cjs/src/search-results/components/icon.d.ts +6 -6
  137. package/build/build-cjs/src/search-results/components/item-picker/index.d.ts +8 -8
  138. package/build/build-cjs/src/search-results/components/itinerary/index.d.ts +3 -3
  139. package/build/build-cjs/src/search-results/components/multi-range-filter.d.ts +6 -6
  140. package/build/build-cjs/src/search-results/components/round-trip/round-trip-results.d.ts +2 -1
  141. package/build/build-cjs/src/search-results/components/search-results-container/flight-search-results.d.ts +1 -1
  142. package/build/build-cjs/src/search-results/components/tab-views/index.d.ts +2 -1
  143. package/build/build-cjs/src/search-results/features/flights/flight-search-results-self-contained.d.ts +2 -1
  144. package/build/build-cjs/src/search-results/features/hotels/hotel-flight-search-results-self-contained.d.ts +2 -1
  145. package/build/build-cjs/src/search-results/features/hotels/hotel-search-results-self-contained.d.ts +2 -1
  146. package/build/build-cjs/src/search-results/features/roundtrips/roundtrip-search-results-self-contained.d.ts +2 -1
  147. package/build/build-cjs/src/search-results/index.d.ts +1 -1
  148. package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +26 -63
  149. package/build/build-cjs/src/search-results/store/search-results-store.d.ts +7 -20
  150. package/build/build-cjs/src/search-results/types.d.ts +104 -103
  151. package/build/build-cjs/src/search-results/utils/flight-utils.d.ts +1 -6
  152. package/build/build-cjs/src/search-results/utils/search-results-utils.d.ts +2 -10
  153. package/build/build-cjs/src/shared/components/flyin/accommodation-flyin.d.ts +3 -3
  154. package/build/build-cjs/src/shared/components/flyin/flights-flyin.d.ts +2 -2
  155. package/build/build-cjs/src/shared/components/flyin/flyin.d.ts +7 -7
  156. package/build/build-cjs/src/shared/components/flyin/group-tour-flyin.d.ts +3 -3
  157. package/build/build-cjs/src/shared/components/icon.d.ts +5 -5
  158. package/build/build-cjs/src/shared/components/loader.d.ts +1 -1
  159. package/build/build-cjs/src/shared/types.d.ts +9 -9
  160. package/build/build-cjs/src/shared/utils/localization-util.d.ts +395 -395
  161. package/build/build-esm/index.js +29536 -48363
  162. package/build/build-esm/src/booking-product/components/age-select.d.ts +3 -3
  163. package/build/build-esm/src/booking-product/components/amount-input.d.ts +5 -5
  164. package/build/build-esm/src/booking-product/components/date-range-picker/calendar-day.d.ts +8 -8
  165. package/build/build-esm/src/booking-product/components/date-range-picker/calendar.d.ts +14 -14
  166. package/build/build-esm/src/booking-product/components/date-range-picker/index.d.ts +19 -16
  167. package/build/build-esm/src/booking-product/components/dates.d.ts +8 -8
  168. package/build/build-esm/src/booking-product/components/footer.d.ts +5 -5
  169. package/build/build-esm/src/booking-product/components/header.d.ts +6 -6
  170. package/build/build-esm/src/booking-product/components/icon.d.ts +5 -5
  171. package/build/build-esm/src/booking-product/components/list-view.d.ts +2 -2
  172. package/build/build-esm/src/booking-product/components/product.d.ts +4 -4
  173. package/build/build-esm/src/booking-product/components/rating.d.ts +1 -1
  174. package/build/build-esm/src/booking-product/components/rooms.d.ts +4 -4
  175. package/build/build-esm/src/booking-product/constants.d.ts +1 -1
  176. package/build/build-esm/src/booking-product/index.d.ts +4 -4
  177. package/build/build-esm/src/booking-product/settings-context.d.ts +2 -1
  178. package/build/build-esm/src/booking-product/types.d.ts +21 -21
  179. package/build/build-esm/src/booking-product/utils/api.d.ts +2 -11
  180. package/build/build-esm/src/booking-product/utils/price.d.ts +1 -10
  181. package/build/build-esm/src/booking-wizard/api-settings-slice.d.ts +2 -3
  182. package/build/build-esm/src/booking-wizard/components/icon.d.ts +5 -5
  183. package/build/build-esm/src/booking-wizard/components/labeled-input.d.ts +13 -13
  184. package/build/build-esm/src/booking-wizard/components/labeled-select.d.ts +16 -16
  185. package/build/build-esm/src/booking-wizard/components/message.d.ts +4 -4
  186. package/build/build-esm/src/booking-wizard/components/multi-range-filter.d.ts +6 -6
  187. package/build/build-esm/src/booking-wizard/components/phone-input.d.ts +11 -11
  188. package/build/build-esm/src/booking-wizard/components/print-offer-button.d.ts +11 -11
  189. package/build/build-esm/src/booking-wizard/components/product-card.d.ts +3 -3
  190. package/build/build-esm/src/booking-wizard/components/step-indicator.d.ts +1 -1
  191. package/build/build-esm/src/booking-wizard/components/step-route.d.ts +3 -3
  192. package/build/build-esm/src/booking-wizard/features/booking/api.d.ts +7 -26
  193. package/build/build-esm/src/booking-wizard/features/booking/booking-self-contained.d.ts +3 -3
  194. package/build/build-esm/src/booking-wizard/features/booking/booking-slice.d.ts +42 -100
  195. package/build/build-esm/src/booking-wizard/features/booking/booking.d.ts +3 -3
  196. package/build/build-esm/src/booking-wizard/features/booking/constants.d.ts +1 -8
  197. package/build/build-esm/src/booking-wizard/features/booking/selectors.d.ts +479 -641
  198. package/build/build-esm/src/booking-wizard/features/confirmation/confirmation.d.ts +2 -1
  199. package/build/build-esm/src/booking-wizard/features/error/error.d.ts +2 -1
  200. package/build/build-esm/src/booking-wizard/features/flight-options/flight-filter.d.ts +3 -3
  201. package/build/build-esm/src/booking-wizard/features/flight-options/flight-option-flight.d.ts +2 -2
  202. package/build/build-esm/src/booking-wizard/features/flight-options/flight-option.d.ts +4 -4
  203. package/build/build-esm/src/booking-wizard/features/flight-options/flight-utils.d.ts +2 -9
  204. package/build/build-esm/src/booking-wizard/features/flight-options/index.d.ts +2 -1
  205. package/build/build-esm/src/booking-wizard/features/price-details/price-details-api.d.ts +1 -6
  206. package/build/build-esm/src/booking-wizard/features/price-details/price-details-slice.d.ts +9 -14
  207. package/build/build-esm/src/booking-wizard/features/price-details/selectors.d.ts +287 -302
  208. package/build/build-esm/src/booking-wizard/features/product-options/none-option.d.ts +3 -3
  209. package/build/build-esm/src/booking-wizard/features/product-options/option-booking-airline-group.d.ts +2 -2
  210. package/build/build-esm/src/booking-wizard/features/product-options/option-booking-group.d.ts +6 -6
  211. package/build/build-esm/src/booking-wizard/features/product-options/option-item.d.ts +5 -5
  212. package/build/build-esm/src/booking-wizard/features/product-options/option-pax-card.d.ts +4 -4
  213. package/build/build-esm/src/booking-wizard/features/product-options/option-pax-group.d.ts +7 -7
  214. package/build/build-esm/src/booking-wizard/features/product-options/option-room.d.ts +5 -5
  215. package/build/build-esm/src/booking-wizard/features/product-options/option-unit-group.d.ts +7 -7
  216. package/build/build-esm/src/booking-wizard/features/product-options/option-units-card.d.ts +3 -3
  217. package/build/build-esm/src/booking-wizard/features/product-options/options-form.d.ts +2 -1
  218. package/build/build-esm/src/booking-wizard/features/room-options/index.d.ts +2 -1
  219. package/build/build-esm/src/booking-wizard/features/room-options/room-utils.d.ts +6 -19
  220. package/build/build-esm/src/booking-wizard/features/room-options/room.d.ts +6 -6
  221. package/build/build-esm/src/booking-wizard/features/room-options/traveler-rooms.d.ts +3 -3
  222. package/build/build-esm/src/booking-wizard/features/sidebar/index.d.ts +2 -2
  223. package/build/build-esm/src/booking-wizard/features/sidebar/sidebar-flight.d.ts +2 -2
  224. package/build/build-esm/src/booking-wizard/features/sidebar/sidebar-util.d.ts +2 -4
  225. package/build/build-esm/src/booking-wizard/features/sidebar/sidebar.d.ts +23 -23
  226. package/build/build-esm/src/booking-wizard/features/summary/summary-booking-option-pax.d.ts +1 -1
  227. package/build/build-esm/src/booking-wizard/features/summary/summary-booking-option-unit.d.ts +1 -1
  228. package/build/build-esm/src/booking-wizard/features/summary/summary-flight.d.ts +2 -2
  229. package/build/build-esm/src/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +1 -1
  230. package/build/build-esm/src/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +1 -1
  231. package/build/build-esm/src/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +1 -1
  232. package/build/build-esm/src/booking-wizard/features/summary/summary-slice.d.ts +3 -3
  233. package/build/build-esm/src/booking-wizard/features/summary/summary.d.ts +2 -1
  234. package/build/build-esm/src/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +75 -75
  235. package/build/build-esm/src/booking-wizard/features/travelers-form/travelers-form-util.d.ts +4 -4
  236. package/build/build-esm/src/booking-wizard/features/travelers-form/travelers-form.d.ts +2 -1
  237. package/build/build-esm/src/booking-wizard/features/travelers-form/type-ahead-input.d.ts +11 -11
  238. package/build/build-esm/src/booking-wizard/features/travelers-form/validate-form.d.ts +1 -8
  239. package/build/build-esm/src/booking-wizard/index.d.ts +6 -6
  240. package/build/build-esm/src/booking-wizard/settings-context.d.ts +2 -1
  241. package/build/build-esm/src/booking-wizard/store.d.ts +22 -40
  242. package/build/build-esm/src/booking-wizard/types.d.ts +239 -239
  243. package/build/build-esm/src/booking-wizard/use-offer-printer.d.ts +8 -8
  244. package/build/build-esm/src/content/components/LanguageSwitcher.d.ts +5 -5
  245. package/build/build-esm/src/content/components/accordion.d.ts +4 -4
  246. package/build/build-esm/src/content/components/breadcrumb.d.ts +7 -7
  247. package/build/build-esm/src/content/components/faq.d.ts +4 -4
  248. package/build/build-esm/src/content/components/gallery.d.ts +6 -6
  249. package/build/build-esm/src/content/components/icon.d.ts +5 -5
  250. package/build/build-esm/src/content/components/image-with-text.d.ts +18 -18
  251. package/build/build-esm/src/content/components/slider.d.ts +5 -5
  252. package/build/build-esm/src/content/featured-trips/types.d.ts +8 -8
  253. package/build/build-esm/src/content/features/content-page/content-page-self-contained.d.ts +1 -1
  254. package/build/build-esm/src/content/footer/types.d.ts +17 -17
  255. package/build/build-esm/src/content/header/types.d.ts +20 -23
  256. package/build/build-esm/src/content/image-card-grid/types.d.ts +8 -8
  257. package/build/build-esm/src/content/image-with-text-section/types.d.ts +15 -15
  258. package/build/build-esm/src/content/login/login-services.d.ts +1 -6
  259. package/build/build-esm/src/content/login/types.d.ts +19 -19
  260. package/build/build-esm/src/content/navbar/placeholderData.d.ts +2 -2
  261. package/build/build-esm/src/content/navbar/types.d.ts +22 -22
  262. package/build/build-esm/src/index.d.ts +1 -17
  263. package/build/build-esm/src/qsm/components/date-range-picker/calendar-day.d.ts +7 -7
  264. package/build/build-esm/src/qsm/components/date-range-picker/calendar.d.ts +18 -18
  265. package/build/build-esm/src/qsm/components/date-range-picker/index.d.ts +5 -5
  266. package/build/build-esm/src/qsm/components/double-search-input-group/index.d.ts +2 -2
  267. package/build/build-esm/src/qsm/components/icon.d.ts +5 -5
  268. package/build/build-esm/src/qsm/components/item-picker/index.d.ts +7 -7
  269. package/build/build-esm/src/qsm/components/search-input/index.d.ts +9 -9
  270. package/build/build-esm/src/qsm/components/search-input-group/index.d.ts +7 -7
  271. package/build/build-esm/src/qsm/index.d.ts +1 -1
  272. package/build/build-esm/src/qsm/store/qsm-slice.d.ts +58 -110
  273. package/build/build-esm/src/qsm/store/qsm-store.d.ts +7 -20
  274. package/build/build-esm/src/qsm/types.d.ts +59 -59
  275. package/build/build-esm/src/search-results/components/filters/filters.d.ts +5 -5
  276. package/build/build-esm/src/search-results/components/filters/flight-filters.d.ts +3 -3
  277. package/build/build-esm/src/search-results/components/flight/flight-banner.d.ts +2 -2
  278. package/build/build-esm/src/search-results/components/flight/flight-card.d.ts +1 -1
  279. package/build/build-esm/src/search-results/components/flight/flight-leg.d.ts +1 -1
  280. package/build/build-esm/src/search-results/components/flight/flight-path.d.ts +1 -1
  281. package/build/build-esm/src/search-results/components/flight/flight-results.d.ts +2 -2
  282. package/build/build-esm/src/search-results/components/flight/flight-search-context/index.d.ts +29 -29
  283. package/build/build-esm/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +5 -5
  284. package/build/build-esm/src/search-results/components/flight/flight-selection/independent-flight-selection.d.ts +1 -1
  285. package/build/build-esm/src/search-results/components/flight/flight-selection/index.d.ts +2 -2
  286. package/build/build-esm/src/search-results/components/flight/flight-selection/paired-flight-option.d.ts +1 -1
  287. package/build/build-esm/src/search-results/components/flight/flight-selection/paired-flight-selection.d.ts +1 -1
  288. package/build/build-esm/src/search-results/components/group-tour/group-tour-card.d.ts +3 -3
  289. package/build/build-esm/src/search-results/components/group-tour/group-tour-results.d.ts +1 -1
  290. package/build/build-esm/src/search-results/components/hotel/hotel-accommodation-results.d.ts +1 -1
  291. package/build/build-esm/src/search-results/components/hotel/hotel-card.d.ts +2 -2
  292. package/build/build-esm/src/search-results/components/icon.d.ts +6 -6
  293. package/build/build-esm/src/search-results/components/item-picker/index.d.ts +8 -8
  294. package/build/build-esm/src/search-results/components/itinerary/index.d.ts +3 -3
  295. package/build/build-esm/src/search-results/components/multi-range-filter.d.ts +6 -6
  296. package/build/build-esm/src/search-results/components/round-trip/round-trip-results.d.ts +2 -1
  297. package/build/build-esm/src/search-results/components/search-results-container/flight-search-results.d.ts +1 -1
  298. package/build/build-esm/src/search-results/components/tab-views/index.d.ts +2 -1
  299. package/build/build-esm/src/search-results/features/flights/flight-search-results-self-contained.d.ts +2 -1
  300. package/build/build-esm/src/search-results/features/hotels/hotel-flight-search-results-self-contained.d.ts +2 -1
  301. package/build/build-esm/src/search-results/features/hotels/hotel-search-results-self-contained.d.ts +2 -1
  302. package/build/build-esm/src/search-results/features/roundtrips/roundtrip-search-results-self-contained.d.ts +2 -1
  303. package/build/build-esm/src/search-results/index.d.ts +1 -1
  304. package/build/build-esm/src/search-results/store/search-results-slice.d.ts +26 -63
  305. package/build/build-esm/src/search-results/store/search-results-store.d.ts +7 -20
  306. package/build/build-esm/src/search-results/types.d.ts +104 -103
  307. package/build/build-esm/src/search-results/utils/flight-utils.d.ts +1 -6
  308. package/build/build-esm/src/search-results/utils/search-results-utils.d.ts +2 -10
  309. package/build/build-esm/src/shared/components/flyin/accommodation-flyin.d.ts +3 -3
  310. package/build/build-esm/src/shared/components/flyin/flights-flyin.d.ts +2 -2
  311. package/build/build-esm/src/shared/components/flyin/flyin.d.ts +7 -7
  312. package/build/build-esm/src/shared/components/flyin/group-tour-flyin.d.ts +3 -3
  313. package/build/build-esm/src/shared/components/icon.d.ts +5 -5
  314. package/build/build-esm/src/shared/components/loader.d.ts +1 -1
  315. package/build/build-esm/src/shared/types.d.ts +9 -9
  316. package/build/build-esm/src/shared/utils/localization-util.d.ts +395 -395
  317. package/package.json +1 -1
  318. package/rollup.config.js +16 -16
  319. package/src/booking-product/components/age-select.tsx +35 -35
  320. package/src/booking-product/components/amount-input.tsx +51 -51
  321. package/src/booking-product/components/date-range-picker/calendar-day.tsx +46 -46
  322. package/src/booking-product/components/date-range-picker/calendar.tsx +155 -155
  323. package/src/booking-product/components/date-range-picker/index.tsx +185 -185
  324. package/src/booking-product/components/dates.tsx +153 -153
  325. package/src/booking-product/components/footer.tsx +54 -54
  326. package/src/booking-product/components/header.tsx +57 -57
  327. package/src/booking-product/components/icon.tsx +200 -200
  328. package/src/booking-product/components/list-view.tsx +54 -54
  329. package/src/booking-product/components/product.tsx +379 -379
  330. package/src/booking-product/components/rating.tsx +21 -21
  331. package/src/booking-product/components/rooms.tsx +171 -171
  332. package/src/booking-product/constants.ts +1 -1
  333. package/src/booking-product/index.tsx +21 -21
  334. package/src/booking-product/settings-context.ts +16 -16
  335. package/src/booking-product/types.ts +30 -30
  336. package/src/booking-product/utils/api.ts +26 -26
  337. package/src/booking-product/utils/price.ts +28 -28
  338. package/src/booking-wizard/api-settings-slice.ts +24 -24
  339. package/src/booking-wizard/components/icon.tsx +398 -398
  340. package/src/booking-wizard/components/labeled-input.tsx +56 -56
  341. package/src/booking-wizard/components/labeled-select.tsx +54 -54
  342. package/src/booking-wizard/components/message.tsx +21 -21
  343. package/src/booking-wizard/components/multi-range-filter.tsx +99 -99
  344. package/src/booking-wizard/components/phone-input.tsx +146 -146
  345. package/src/booking-wizard/components/print-offer-button.tsx +53 -53
  346. package/src/booking-wizard/components/product-card.tsx +23 -23
  347. package/src/booking-wizard/components/step-indicator.tsx +57 -57
  348. package/src/booking-wizard/components/step-route.tsx +26 -26
  349. package/src/booking-wizard/declarations.d.ts +4 -4
  350. package/src/booking-wizard/features/booking/api.ts +44 -44
  351. package/src/booking-wizard/features/booking/booking-self-contained.tsx +303 -303
  352. package/src/booking-wizard/features/booking/booking-slice.ts +625 -625
  353. package/src/booking-wizard/features/booking/booking.tsx +327 -326
  354. package/src/booking-wizard/features/booking/constants.ts +16 -16
  355. package/src/booking-wizard/features/booking/selectors.ts +406 -406
  356. package/src/booking-wizard/features/confirmation/confirmation.tsx +90 -90
  357. package/src/booking-wizard/features/error/error.tsx +71 -71
  358. package/src/booking-wizard/features/flight-options/flight-filter.tsx +371 -371
  359. package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +354 -354
  360. package/src/booking-wizard/features/flight-options/flight-option-modal.tsx +211 -211
  361. package/src/booking-wizard/features/flight-options/flight-option.tsx +57 -57
  362. package/src/booking-wizard/features/flight-options/flight-utils.ts +423 -423
  363. package/src/booking-wizard/features/flight-options/index.tsx +166 -166
  364. package/src/booking-wizard/features/price-details/price-details-api.ts +20 -20
  365. package/src/booking-wizard/features/price-details/price-details-slice.ts +77 -77
  366. package/src/booking-wizard/features/price-details/selectors.ts +117 -117
  367. package/src/booking-wizard/features/price-details/util.ts +115 -115
  368. package/src/booking-wizard/features/product-options/no-options.tsx +18 -18
  369. package/src/booking-wizard/features/product-options/none-option.tsx +73 -73
  370. package/src/booking-wizard/features/product-options/option-booking-airline-group.tsx +53 -53
  371. package/src/booking-wizard/features/product-options/option-booking-group.tsx +152 -152
  372. package/src/booking-wizard/features/product-options/option-item.tsx +236 -236
  373. package/src/booking-wizard/features/product-options/option-pax-card.tsx +159 -159
  374. package/src/booking-wizard/features/product-options/option-pax-group.tsx +122 -122
  375. package/src/booking-wizard/features/product-options/option-room.tsx +226 -226
  376. package/src/booking-wizard/features/product-options/option-unit-group.tsx +138 -138
  377. package/src/booking-wizard/features/product-options/option-units-card.tsx +148 -148
  378. package/src/booking-wizard/features/product-options/options-form.tsx +382 -382
  379. package/src/booking-wizard/features/room-options/index.tsx +132 -132
  380. package/src/booking-wizard/features/room-options/room-utils.ts +154 -154
  381. package/src/booking-wizard/features/room-options/room.tsx +123 -123
  382. package/src/booking-wizard/features/room-options/traveler-rooms.tsx +64 -64
  383. package/src/booking-wizard/features/sidebar/index.tsx +81 -81
  384. package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +66 -66
  385. package/src/booking-wizard/features/sidebar/sidebar-util.ts +147 -147
  386. package/src/booking-wizard/features/sidebar/sidebar.tsx +316 -316
  387. package/src/booking-wizard/features/summary/summary-booking-option-pax.tsx +23 -23
  388. package/src/booking-wizard/features/summary/summary-booking-option-unit.tsx +23 -23
  389. package/src/booking-wizard/features/summary/summary-flight.tsx +36 -36
  390. package/src/booking-wizard/features/summary/summary-per-booking-option-group.tsx +60 -60
  391. package/src/booking-wizard/features/summary/summary-per-pax-option-group.tsx +56 -56
  392. package/src/booking-wizard/features/summary/summary-per-unit-option-group.tsx +58 -58
  393. package/src/booking-wizard/features/summary/summary-slice.ts +27 -27
  394. package/src/booking-wizard/features/summary/summary.tsx +562 -562
  395. package/src/booking-wizard/features/travelers-form/controls/gender-control.tsx +60 -60
  396. package/src/booking-wizard/features/travelers-form/travelers-form-slice.ts +157 -157
  397. package/src/booking-wizard/features/travelers-form/travelers-form-util.ts +10 -10
  398. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +1101 -1101
  399. package/src/booking-wizard/features/travelers-form/type-ahead-input.tsx +85 -85
  400. package/src/booking-wizard/features/travelers-form/validate-form.ts +178 -178
  401. package/src/booking-wizard/index.tsx +27 -27
  402. package/src/booking-wizard/settings-context.ts +64 -64
  403. package/src/booking-wizard/store.ts +26 -26
  404. package/src/booking-wizard/types.ts +331 -331
  405. package/src/booking-wizard/use-offer-printer.ts +108 -108
  406. package/src/content/components/LanguageSwitcher.tsx +158 -158
  407. package/src/content/components/accordion.tsx +30 -30
  408. package/src/content/components/breadcrumb.tsx +67 -67
  409. package/src/content/components/contact.tsx +211 -211
  410. package/src/content/components/faq.tsx +42 -42
  411. package/src/content/components/gallery.tsx +153 -153
  412. package/src/content/components/icon.tsx +695 -695
  413. package/src/content/components/image-with-text.tsx +120 -120
  414. package/src/content/components/login.tsx +162 -162
  415. package/src/content/components/personal-contact-form.tsx +809 -809
  416. package/src/content/components/slider.tsx +237 -237
  417. package/src/content/featured-trips/featured-trip-card.tsx +48 -48
  418. package/src/content/featured-trips/index.tsx +19 -19
  419. package/src/content/featured-trips/types.ts +13 -13
  420. package/src/content/features/content-page/content-page-self-contained.tsx +895 -895
  421. package/src/content/footer/index.tsx +159 -159
  422. package/src/content/footer/types.ts +36 -36
  423. package/src/content/header/index.tsx +43 -43
  424. package/src/content/header/types.ts +26 -26
  425. package/src/content/image-card-grid/index.tsx +34 -34
  426. package/src/content/image-card-grid/types.ts +13 -13
  427. package/src/content/image-with-text-section/card.tsx +58 -58
  428. package/src/content/image-with-text-section/index.tsx +22 -22
  429. package/src/content/image-with-text-section/types.ts +20 -20
  430. package/src/content/login/confirm-component.tsx +149 -149
  431. package/src/content/login/index.tsx +70 -70
  432. package/src/content/login/login-component.tsx +159 -159
  433. package/src/content/login/login-services.ts +109 -109
  434. package/src/content/login/reset-password-component.tsx +191 -191
  435. package/src/content/login/types.ts +29 -29
  436. package/src/content/navbar/index.tsx +354 -354
  437. package/src/content/navbar/placeholderData.tsx +173 -173
  438. package/src/content/navbar/types.ts +43 -43
  439. package/src/index.ts +44 -44
  440. package/src/qsm/components/QSMContainer/qsm-container.tsx +512 -512
  441. package/src/qsm/components/date-picker/index.tsx +152 -152
  442. package/src/qsm/components/date-range-picker/calendar-day.tsx +49 -49
  443. package/src/qsm/components/date-range-picker/calendar.tsx +211 -211
  444. package/src/qsm/components/date-range-picker/index.tsx +404 -404
  445. package/src/qsm/components/double-search-input-group/index.tsx +78 -78
  446. package/src/qsm/components/icon.tsx +354 -354
  447. package/src/qsm/components/item-picker/index.tsx +69 -69
  448. package/src/qsm/components/mobile-filter-modal/index.tsx +307 -307
  449. package/src/qsm/components/search-input/index.tsx +91 -91
  450. package/src/qsm/components/search-input-group/index.tsx +199 -199
  451. package/src/qsm/components/travel-class-picker/index.tsx +28 -28
  452. package/src/qsm/components/travel-input/index.tsx +243 -243
  453. package/src/qsm/components/travel-input-group/index.tsx +114 -114
  454. package/src/qsm/components/travel-nationality-picker/index.tsx +28 -28
  455. package/src/qsm/components/travel-type-picker/index.tsx +28 -28
  456. package/src/qsm/index.tsx +26 -26
  457. package/src/qsm/qsm-configuration-context.ts +31 -31
  458. package/src/qsm/store/qsm-slice.ts +275 -275
  459. package/src/qsm/store/qsm-store.ts +13 -13
  460. package/src/qsm/types.ts +110 -110
  461. package/src/search-results/components/filters/filters.tsx +230 -230
  462. package/src/search-results/components/filters/flight-filters.tsx +671 -671
  463. package/src/search-results/components/flight/flight-banner.tsx +35 -35
  464. package/src/search-results/components/flight/flight-card.tsx +38 -38
  465. package/src/search-results/components/flight/flight-leg.tsx +61 -61
  466. package/src/search-results/components/flight/flight-path.tsx +23 -23
  467. package/src/search-results/components/flight/flight-results.tsx +208 -208
  468. package/src/search-results/components/flight/flight-search-context/index.tsx +628 -628
  469. package/src/search-results/components/flight/flight-selection/independent-flight-option.tsx +147 -147
  470. package/src/search-results/components/flight/flight-selection/independent-flight-selection.tsx +172 -172
  471. package/src/search-results/components/flight/flight-selection/index.tsx +19 -19
  472. package/src/search-results/components/flight/flight-selection/paired-flight-option.tsx +255 -255
  473. package/src/search-results/components/flight/flight-selection/paired-flight-selection.tsx +38 -38
  474. package/src/search-results/components/group-tour/group-tour-card.tsx +105 -105
  475. package/src/search-results/components/group-tour/group-tour-results.tsx +62 -62
  476. package/src/search-results/components/hotel/hotel-accommodation-results.tsx +176 -176
  477. package/src/search-results/components/hotel/hotel-card.tsx +113 -113
  478. package/src/search-results/components/icon.tsx +680 -680
  479. package/src/search-results/components/item-picker/index.tsx +81 -81
  480. package/src/search-results/components/itinerary/index.tsx +310 -310
  481. package/src/search-results/components/multi-range-filter.tsx +104 -104
  482. package/src/search-results/components/round-trip/round-trip-results.tsx +199 -199
  483. package/src/search-results/components/search-results-container/flight-search-results.tsx +137 -137
  484. package/src/search-results/components/search-results-container/search-results-container.tsx +893 -891
  485. package/src/search-results/components/spinner/spinner.tsx +16 -16
  486. package/src/search-results/components/tab-views/index.tsx +53 -53
  487. package/src/search-results/features/flights/flight-search-results-self-contained.tsx +294 -294
  488. package/src/search-results/features/hotels/hotel-flight-search-results-self-contained.tsx +143 -143
  489. package/src/search-results/features/hotels/hotel-search-results-self-contained.tsx +220 -220
  490. package/src/search-results/features/roundtrips/roundtrip-search-results-self-contained.tsx +65 -65
  491. package/src/search-results/index.tsx +24 -24
  492. package/src/search-results/search-results-configuration-context.ts +6 -6
  493. package/src/search-results/store/search-results-slice.ts +158 -158
  494. package/src/search-results/store/search-results-store.ts +13 -13
  495. package/src/search-results/types.ts +181 -180
  496. package/src/search-results/utils/flight-utils.ts +93 -93
  497. package/src/search-results/utils/search-results-utils.ts +251 -251
  498. package/src/shared/components/flyin/accommodation-flyin.tsx +422 -422
  499. package/src/shared/components/flyin/flights-flyin.tsx +503 -503
  500. package/src/shared/components/flyin/flyin.tsx +82 -82
  501. package/src/shared/components/flyin/group-tour-flyin.tsx +293 -293
  502. package/src/shared/components/icon.tsx +826 -826
  503. package/src/shared/components/loader.tsx +16 -16
  504. package/src/shared/translations/ar-SA.json +381 -381
  505. package/src/shared/translations/da-DK.json +381 -381
  506. package/src/shared/translations/de-DE.json +381 -381
  507. package/src/shared/translations/en-GB.json +385 -385
  508. package/src/shared/translations/es-ES.json +381 -381
  509. package/src/shared/translations/fr-BE.json +385 -385
  510. package/src/shared/translations/fr-FR.json +381 -381
  511. package/src/shared/translations/is-IS.json +381 -381
  512. package/src/shared/translations/it-IT.json +381 -381
  513. package/src/shared/translations/ja-JP.json +381 -381
  514. package/src/shared/translations/nl-BE.json +385 -385
  515. package/src/shared/translations/nl-NL.json +381 -381
  516. package/src/shared/translations/no-NO.json +381 -381
  517. package/src/shared/translations/pl-PL.json +381 -381
  518. package/src/shared/translations/pt-PT.json +381 -381
  519. package/src/shared/translations/sv-SE.json +381 -381
  520. package/src/shared/types.ts +31 -31
  521. package/src/shared/utils/class-util.ts +7 -7
  522. package/src/shared/utils/localization-util.ts +275 -275
  523. package/src/shared/utils/query-string-util.ts +91 -91
  524. package/src/shared/utils/tide-api-utils.ts +34 -34
  525. package/src/shared/utils/use-media-query-util.ts +19 -19
  526. package/styles/abstracts/_mixins.scss +74 -74
  527. package/styles/abstracts/_variables.scss +57 -57
  528. package/styles/base/_fonts.scss +2 -2
  529. package/styles/base/_normalize.scss +227 -227
  530. package/styles/base/_typography.scss +35 -35
  531. package/styles/booking-joker-variables.scss +596 -596
  532. package/styles/booking-product-variables.scss +330 -330
  533. package/styles/booking-product.scss +438 -438
  534. package/styles/booking-qsm-variables.scss +501 -501
  535. package/styles/booking-qsm.scss +52 -52
  536. package/styles/booking-search-results-variables.scss +728 -728
  537. package/styles/booking-search-results.scss +53 -53
  538. package/styles/booking-wizard-variables.scss +603 -603
  539. package/styles/booking-wizard.scss +61 -61
  540. package/styles/components/_accordion.scss +67 -67
  541. package/styles/components/_animations.scss +39 -39
  542. package/styles/components/_base.scss +107 -107
  543. package/styles/components/_booking.scss +872 -872
  544. package/styles/components/_breadcrumb.scss +92 -92
  545. package/styles/components/_button.scss +238 -238
  546. package/styles/components/_checkbox.scss +230 -230
  547. package/styles/components/_contact.scss +239 -239
  548. package/styles/components/_content.scss +336 -336
  549. package/styles/components/_cta.scss +238 -238
  550. package/styles/components/_date-list.scss +41 -41
  551. package/styles/components/_date-range-picker.scss +223 -223
  552. package/styles/components/_decrement-increment.scss +35 -35
  553. package/styles/components/_dropdown.scss +72 -72
  554. package/styles/components/_faq.scss +27 -27
  555. package/styles/components/_flight-option.scss +1419 -1419
  556. package/styles/components/_flyin.scss +727 -727
  557. package/styles/components/_footer.scss +141 -141
  558. package/styles/components/_form.scss +1634 -1634
  559. package/styles/components/_gallery.scss +314 -314
  560. package/styles/components/_header.scss +113 -113
  561. package/styles/components/_image-with-text.scss +206 -206
  562. package/styles/components/_img-slider.scss +175 -175
  563. package/styles/components/_info-message.scss +75 -75
  564. package/styles/components/_input.scss +35 -35
  565. package/styles/components/_list.scss +185 -185
  566. package/styles/components/_loader.scss +70 -70
  567. package/styles/components/_login.scss +140 -140
  568. package/styles/components/_mixins.scss +579 -579
  569. package/styles/components/_navbar.scss +765 -765
  570. package/styles/components/_passenger-picker.scss +306 -306
  571. package/styles/components/_phone-input.scss +8 -8
  572. package/styles/components/_placeholders.scss +165 -165
  573. package/styles/components/_pricing-summary.scss +163 -163
  574. package/styles/components/_qsm.scss +17 -17
  575. package/styles/components/_radiobutton.scss +170 -170
  576. package/styles/components/_search.scss +2009 -2009
  577. package/styles/components/_select-wrapper.scss +76 -76
  578. package/styles/components/_slider.scss +128 -128
  579. package/styles/components/_spinner.scss +29 -29
  580. package/styles/components/_step-indicators.scss +161 -161
  581. package/styles/components/_table.scss +81 -81
  582. package/styles/components/_tree.scss +648 -648
  583. package/styles/components/_typeahead.scss +275 -275
  584. package/styles/components/_variables.scss +89 -89
  585. package/styles/content-blocks-variables.scss +507 -507
  586. package/styles/content-blocks.scss +64 -64
  587. package/styles/font.scss +2 -2
  588. package/styles/qsm/_calendar.scss +274 -274
  589. package/styles/qsm/_qsm.scss +1094 -1094
  590. package/styles/search.scss +1200 -1200
  591. package/tsconfig.json +24 -24
@@ -1,422 +1,422 @@
1
- import React, { useContext, useMemo } from 'react';
2
- import { useDispatch, useSelector } from 'react-redux';
3
- import ItemPicker from '../../../qsm/components/item-picker';
4
- import { SearchResultsRootState } from '../../../search-results/store/search-results-store';
5
- import SearchResultsConfigurationContext from '../../../search-results/search-results-configuration-context';
6
- import { getTranslations } from '../../utils/localization-util';
7
- import { setPackagingAccoSearchDetails } from '../../../search-results/store/search-results-slice';
8
- import { PackageMainRoom } from '@qite/tide-client';
9
- import { PickerItem } from '../../types';
10
- import { first } from 'lodash';
11
-
12
- type AccommodationFlyInProps = {
13
- isLoading: boolean;
14
- isOpen: boolean;
15
- setIsOpen: (open: boolean) => void;
16
- };
17
-
18
- type PackagingAccommodationResponse = {
19
- code: string;
20
- name: string;
21
- price: number;
22
- currencyCode: string;
23
- rooms: PackageMainRoom[];
24
- };
25
-
26
- type GroupedAccommodation = {
27
- accommodationCode: string;
28
- accommodationName: string;
29
- regimes: PickerItem[];
30
- };
31
-
32
- const formatPrice = (price?: number, currencyCode = 'EUR') => {
33
- if (typeof price !== 'number') return '';
34
-
35
- return new Intl.NumberFormat('nl-BE', {
36
- style: 'currency',
37
- currency: currencyCode
38
- }).format(price);
39
- };
40
-
41
- const AccommodationFlyIn: React.FC<AccommodationFlyInProps> = ({ isLoading, isOpen, setIsOpen }) => {
42
- const dispatch = useDispatch();
43
- const context = useContext(SearchResultsConfigurationContext);
44
- const language = context?.languageCode ?? 'en-GB';
45
- const translations = getTranslations(language);
46
-
47
- const { packagingAccoSearchDetails, selectedPackagingAccoResultCode } = useSelector((state: SearchResultsRootState) => state.searchResults);
48
-
49
- const selectedPackagingAccoSearchDetails = useMemo<PackagingAccommodationResponse | undefined>(() => {
50
- return packagingAccoSearchDetails?.find((x) => x.code === selectedPackagingAccoResultCode);
51
- }, [packagingAccoSearchDetails, selectedPackagingAccoResultCode]);
52
-
53
- const groupedRooms = useMemo(() => {
54
- if (!selectedPackagingAccoSearchDetails?.rooms) return [];
55
-
56
- return selectedPackagingAccoSearchDetails.rooms.map((room) => {
57
- const groupedMap = new Map<string, GroupedAccommodation>();
58
-
59
- room.options.forEach((option) => {
60
- const key = option.accommodationCode;
61
-
62
- if (!groupedMap.has(key)) {
63
- groupedMap.set(key, {
64
- accommodationCode: option.accommodationCode,
65
- accommodationName: option.accommodationName,
66
- regimes: []
67
- });
68
- }
69
-
70
- groupedMap.get(key)?.regimes.push({
71
- id: option.guid,
72
- label: option.regimeName
73
- });
74
- });
75
-
76
- return Array.from(groupedMap.values());
77
- });
78
- }, [selectedPackagingAccoSearchDetails]);
79
-
80
- const getSelectedOptionForRoom = (roomIndex: number) => {
81
- return selectedPackagingAccoSearchDetails?.rooms?.[roomIndex]?.options?.find((option) => option.isSelected);
82
- };
83
-
84
- const getSelectedOptionForAccommodation = (roomIndex: number, accommodationCode: string) => {
85
- return selectedPackagingAccoSearchDetails?.rooms?.[roomIndex]?.options?.find(
86
- (option) => option.accommodationCode === accommodationCode && option.isSelected
87
- );
88
- };
89
-
90
- const handlePick = (roomIndex: number, selectedGuid?: string) => {
91
- if (!packagingAccoSearchDetails || !selectedPackagingAccoSearchDetails) return;
92
-
93
- const updatedPackagingAccoSearchDetails = packagingAccoSearchDetails.map((product) => {
94
- if (product.code !== selectedPackagingAccoSearchDetails.code) {
95
- return product;
96
- }
97
-
98
- const updatedRooms = product.rooms.map((room, currentRoomIndex) => {
99
- if (currentRoomIndex !== roomIndex) {
100
- return room;
101
- }
102
-
103
- return {
104
- ...room,
105
- options: room.options.map((option) => ({
106
- ...option,
107
- isSelected: option.guid === selectedGuid
108
- }))
109
- };
110
- });
111
-
112
- return {
113
- ...product,
114
- rooms: updatedRooms
115
- };
116
- });
117
-
118
- dispatch(setPackagingAccoSearchDetails(updatedPackagingAccoSearchDetails));
119
- };
120
-
121
- const handleConfirm = () => {
122
- if (isOpen) {
123
- setIsOpen(false);
124
- }
125
- };
126
-
127
- if (!selectedPackagingAccoSearchDetails) {
128
- return null;
129
- }
130
-
131
- const calculateTotalPrice = () => {
132
- const selectedOptions = selectedPackagingAccoSearchDetails.rooms.flatMap((room) => room.options.filter((option) => option.isSelected));
133
- const totalPrice = selectedOptions.reduce((total, option) => total + (option.price || 0), 0);
134
- return formatPrice(totalPrice, selectedPackagingAccoSearchDetails.currencyCode);
135
- };
136
-
137
- const getPriceDifference = (currentSelectedPrice: number | undefined, roomIndex: number, accommodationCode: string, regimeId?: string) => {
138
- let targetPrice = 0;
139
-
140
- const selectedOption = getSelectedOptionForAccommodation(roomIndex, accommodationCode);
141
-
142
- if (selectedOption?.price) {
143
- targetPrice = selectedOption.price;
144
- } else {
145
- const firstOption = selectedPackagingAccoSearchDetails.rooms[roomIndex].options.find((option) => option.accommodationCode === accommodationCode);
146
- targetPrice = firstOption?.price || 0;
147
- }
148
-
149
- if (regimeId) {
150
- const regimeOption = selectedPackagingAccoSearchDetails.rooms[roomIndex].options.find((option) => option.guid === regimeId);
151
- targetPrice = regimeOption?.price || 0;
152
- }
153
-
154
- return targetPrice - (currentSelectedPrice || 0);
155
- };
156
-
157
- const formatPriceDifference = (difference: number, currencyCode: string) => {
158
- if (difference === 0) {
159
- return null;
160
- }
161
-
162
- const formattedAbsoluteValue = formatPrice(Math.abs(difference), currencyCode);
163
- return `${difference > 0 ? '+' : '-'} ${formattedAbsoluteValue}`;
164
- };
165
-
166
- const getPriceDifferenceClassName = (difference: number) => {
167
- if (difference < 0) {
168
- return 'flyin__acco__price flyin__acco__price--decrease';
169
- }
170
-
171
- if (difference > 0) {
172
- return 'flyin__acco__price flyin__acco__price--increase';
173
- }
174
-
175
- return 'flyin__acco__price';
176
- };
177
-
178
- const regimeFormatter = (roomIndex: number, accommodation: GroupedAccommodation, regimeId: string, label: string) => {
179
- const roomOption = getSelectedOptionForRoom(roomIndex);
180
-
181
- const difference = getPriceDifference(roomOption?.price, roomIndex, accommodation.accommodationCode, regimeId);
182
-
183
- return `${label} ${difference !== 0 ? `(${formatPriceDifference(difference, selectedPackagingAccoSearchDetails.currencyCode)})` : ''}`;
184
- };
185
-
186
- return (
187
- <>
188
- <div className="flyin__content">
189
- {groupedRooms.map((roomAccommodations, roomIndex) => {
190
- const selectedRoomOption = getSelectedOptionForRoom(roomIndex);
191
-
192
- return (
193
- <div className="flyin__acco" key={`room-${roomIndex}`}>
194
- <h3 className="flyin__acco__room-title">Room {roomIndex + 1}</h3>
195
- <div className="flyin__acco__cards">
196
- {roomAccommodations.map((accommodation) => {
197
- const selectedOption = getSelectedOptionForAccommodation(roomIndex, accommodation.accommodationCode);
198
-
199
- const priceDifference = getPriceDifference(selectedRoomOption?.price, roomIndex, accommodation.accommodationCode);
200
- return (
201
- <div className="flyin__acco__card" key={`${roomIndex}-${accommodation.accommodationCode}`}>
202
- <div className="flyin__acco__content">
203
- <h4 className="flyin__acco__title">{accommodation.accommodationName}</h4>
204
- </div>
205
-
206
- <div className="flyin__acco__footer">
207
- <ItemPicker
208
- items={accommodation.regimes}
209
- selection={selectedOption?.regimeName}
210
- label={''}
211
- placeholder={'Select regime'}
212
- classModifier=""
213
- onPick={(selected, selectedGuid) => handlePick(roomIndex, selectedGuid)}
214
- valueFormatter={(id, label) => regimeFormatter(roomIndex, accommodation, id, label)}
215
- />
216
-
217
- <div className="flyin__acco__footer__actions">
218
- <button
219
- className={
220
- selectedRoomOption?.accommodationCode == accommodation.accommodationCode ? 'cta cta--select cta--selected' : 'cta cta--select'
221
- }
222
- onClick={() => {
223
- handlePick(roomIndex, selectedOption ? selectedOption.guid : first(accommodation.regimes)?.id);
224
- }}>
225
- {selectedRoomOption?.accommodationCode == accommodation.accommodationCode
226
- ? translations?.SHARED.SELECTED
227
- : translations?.SHARED.SELECT}
228
- </button>
229
-
230
- <div className="flyin__acco__price__wrapper">
231
- <span className={getPriceDifferenceClassName(priceDifference)}>
232
- {formatPriceDifference(priceDifference, selectedPackagingAccoSearchDetails.currencyCode)}
233
- </span>
234
- </div>
235
- </div>
236
- </div>
237
- </div>
238
- );
239
- })}
240
- </div>
241
- </div>
242
- );
243
- })}
244
- </div>
245
-
246
- <div className="flyin__footer">
247
- <div className="flyin__footer__price">Total price: {calculateTotalPrice()}</div>
248
-
249
- <div className="flyin__button-wrapper">
250
- <button className="cta cta--select" onClick={handleConfirm}>
251
- {translations.PRODUCT.BOOK_NOW}
252
- </button>
253
- </div>
254
- </div>
255
- </>
256
- // Slicing with image and usps, not available in the current API response.
257
- // <>
258
- // <div className="flyin__content">
259
- // <div className="flyin__acco">
260
- // <div className="flyin__acco__cards">
261
- // <div className="flyin__acco__card">
262
- // <div className="flyin__acco__img__wrapper">
263
- // <img src="https://cdn.pixabay.com/photo/2024/05/15/12/31/lake-8763490_1280.jpg" alt="river" className="flyin__acco__img" />
264
- // <div className="flyin__acco__price__wrapper">
265
- // <span className="flyin__acco__price__label">{translations?.SHARED.TOTAL_PRICE}</span>
266
- // <span className="flyin__acco__price flyin__acco__price--increase">+1.764,00</span>
267
- // </div>
268
- // </div>
269
-
270
- // <div className="flyin__acco__content">
271
- // <div className="flyin__acco__header">
272
- // <h4 className="flyin__acco__title">Deluxe Balcony Room</h4>
273
- // <div className="flyin__acco__usps">
274
- // <div className="flyin__acco__usp">
275
- // <Icon name="ui-check" width={16} />
276
- // <span className="flyin__acco__usp__text">Sea sight</span>
277
- // </div>
278
- // <div className="flyin__acco__usp">
279
- // <Icon name="ui-check" width={16} />
280
- // <span className="flyin__acco__usp__text">Free wifi</span>
281
- // </div>
282
- // <div className="flyin__acco__usp">
283
- // <Icon name="ui-check" width={16} />
284
- // <span className="flyin__acco__usp__text">Breakfast included</span>
285
- // </div>
286
- // <div className="flyin__acco__usp">
287
- // <Icon name="ui-check" width={16} />
288
- // <span className="flyin__acco__usp__text">Air conditioning</span>
289
- // </div>
290
- // <div className="flyin__acco__usp">
291
- // <Icon name="ui-check" width={16} />
292
- // <span className="flyin__acco__usp__text">Private bathroom</span>
293
- // </div>
294
- // </div>
295
- // </div>
296
- // </div>
297
-
298
- // <div className="flyin__acco__footer">
299
- // <ItemPicker
300
- // items={travelClasses}
301
- // selection={selectedTravelClass}
302
- // label=" "
303
- // placeholder={translations.QSM.TRAVEL_CLASS_PLACEHOLDER}
304
- // classModifier="travel-class-picker__items"
305
- // onPick={(item) => setSelectedTravelClass(item)}
306
- // />
307
- // <button className="cta cta--select">{translations?.SHARED.SELECT}</button>
308
- // </div>
309
- // </div>
310
-
311
- // <div className="flyin__acco__card">
312
- // <div className="flyin__acco__img__wrapper">
313
- // <img src="https://cdn.pixabay.com/photo/2024/05/15/12/31/lake-8763490_1280.jpg" alt="river" className="flyin__acco__img" />
314
- // <div className="flyin__acco__price__wrapper">
315
- // <span className="flyin__acco__price__label">{translations?.SHARED.TOTAL_PRICE}</span>
316
- // <span className="flyin__acco__price flyin__acco__price--increase">+1.764,00</span>
317
- // </div>
318
- // </div>
319
-
320
- // <div className="flyin__acco__content">
321
- // <div className="flyin__acco__header">
322
- // <h4 className="flyin__acco__title">Standard Room</h4>
323
- // <div className="flyin__acco__usps">
324
- // <div className="flyin__acco__usp">
325
- // <Icon name="ui-check" width={16} />
326
- // <span className="flyin__acco__usp__text">Garden view</span>
327
- // </div>
328
- // <div className="flyin__acco__usp">
329
- // <Icon name="ui-check" width={16} />
330
- // <span className="flyin__acco__usp__text">Free wifi</span>
331
- // </div>
332
- // <div className="flyin__acco__usp">
333
- // <Icon name="ui-check" width={16} />
334
- // <span className="flyin__acco__usp__text">Double bed</span>
335
- // </div>
336
- // </div>
337
- // </div>
338
- // </div>
339
-
340
- // <div className="flyin__acco__footer">
341
- // <ItemPicker
342
- // items={travelClasses}
343
- // selection={selectedTravelClass}
344
- // label=" "
345
- // placeholder={translations.QSM.TRAVEL_CLASS_PLACEHOLDER}
346
- // classModifier="travel-class-picker__items"
347
- // onPick={setSelectedTravelClass}
348
- // />
349
- // <button className="cta cta--select">{translations?.SHARED.SELECT}</button>
350
- // </div>
351
- // </div>
352
-
353
- // <div className="flyin__acco__card">
354
- // <div className="flyin__acco__img__wrapper">
355
- // <img src="https://cdn.pixabay.com/photo/2024/05/15/12/31/lake-8763490_1280.jpg" alt="river" className="flyin__acco__img" />
356
- // <div className="flyin__acco__price__wrapper">
357
- // <span className="flyin__acco__price__label">{translations?.SHARED.TOTAL_PRICE}</span>
358
- // <span className="flyin__acco__price flyin__acco__price--increase">+1.764,00</span>
359
- // </div>
360
- // </div>
361
-
362
- // <div className="flyin__acco__content">
363
- // <div className="flyin__acco__header">
364
- // <h4 className="flyin__acco__title">Suite</h4>
365
- // <div className="flyin__acco__usps">
366
- // <div className="flyin__acco__usp">
367
- // <Icon name="ui-check" width={16} />
368
- // <span className="flyin__acco__usp__text">Sea sight</span>
369
- // </div>
370
- // <div className="flyin__acco__usp">
371
- // <Icon name="ui-check" width={16} />
372
- // <span className="flyin__acco__usp__text">Free wifi</span>
373
- // </div>
374
- // <div className="flyin__acco__usp">
375
- // <Icon name="ui-check" width={16} />
376
- // <span className="flyin__acco__usp__text">Breakfast included</span>
377
- // </div>
378
- // <div className="flyin__acco__usp">
379
- // <Icon name="ui-check" width={16} />
380
- // <span className="flyin__acco__usp__text">Jacuzzi</span>
381
- // </div>
382
- // <div className="flyin__acco__usp">
383
- // <Icon name="ui-check" width={16} />
384
- // <span className="flyin__acco__usp__text">Private terrace</span>
385
- // </div>
386
- // </div>
387
- // </div>
388
- // </div>
389
-
390
- // <div className="flyin__acco__footer">
391
- // <ItemPicker
392
- // items={travelClasses}
393
- // selection={selectedTravelClass}
394
- // label=" "
395
- // placeholder={translations.QSM.TRAVEL_CLASS_PLACEHOLDER}
396
- // classModifier="travel-class-picker__items"
397
- // onPick={setSelectedTravelClass}
398
- // />
399
- // <button className="cta cta--select">{translations?.SHARED.SELECT}</button>
400
- // </div>
401
- // </div>
402
- // </div>
403
- // </div>
404
-
405
- // {/* {isLoading && (
406
- // <Spinner />
407
- // )} */}
408
- // </div>
409
-
410
- // <div className="flyin__footer">
411
- // <div className="flyin__footer__price">Total price: €</div>
412
- // <div className="flyin__button-wrapper">
413
- // <button className="cta cta--select" onClick={handleConfirm}>
414
- // Toevoegen
415
- // </button>
416
- // </div>
417
- // </div>
418
- // </>
419
- );
420
- };
421
-
422
- export default AccommodationFlyIn;
1
+ import React, { useContext, useMemo } from 'react';
2
+ import { useDispatch, useSelector } from 'react-redux';
3
+ import ItemPicker from '../../../qsm/components/item-picker';
4
+ import { SearchResultsRootState } from '../../../search-results/store/search-results-store';
5
+ import SearchResultsConfigurationContext from '../../../search-results/search-results-configuration-context';
6
+ import { getTranslations } from '../../utils/localization-util';
7
+ import { setPackagingAccoSearchDetails } from '../../../search-results/store/search-results-slice';
8
+ import { PackageMainRoom } from '@qite/tide-client';
9
+ import { PickerItem } from '../../types';
10
+ import { first } from 'lodash';
11
+
12
+ type AccommodationFlyInProps = {
13
+ isLoading: boolean;
14
+ isOpen: boolean;
15
+ setIsOpen: (open: boolean) => void;
16
+ };
17
+
18
+ type PackagingAccommodationResponse = {
19
+ code: string;
20
+ name: string;
21
+ price: number;
22
+ currencyCode: string;
23
+ rooms: PackageMainRoom[];
24
+ };
25
+
26
+ type GroupedAccommodation = {
27
+ accommodationCode: string;
28
+ accommodationName: string;
29
+ regimes: PickerItem[];
30
+ };
31
+
32
+ const formatPrice = (price?: number, currencyCode = 'EUR') => {
33
+ if (typeof price !== 'number') return '';
34
+
35
+ return new Intl.NumberFormat('nl-BE', {
36
+ style: 'currency',
37
+ currency: currencyCode
38
+ }).format(price);
39
+ };
40
+
41
+ const AccommodationFlyIn: React.FC<AccommodationFlyInProps> = ({ isLoading, isOpen, setIsOpen }) => {
42
+ const dispatch = useDispatch();
43
+ const context = useContext(SearchResultsConfigurationContext);
44
+ const language = context?.languageCode ?? 'en-GB';
45
+ const translations = getTranslations(language);
46
+
47
+ const { packagingAccoSearchDetails, selectedPackagingAccoResultCode } = useSelector((state: SearchResultsRootState) => state.searchResults);
48
+
49
+ const selectedPackagingAccoSearchDetails = useMemo<PackagingAccommodationResponse | undefined>(() => {
50
+ return packagingAccoSearchDetails?.find((x) => x.code === selectedPackagingAccoResultCode);
51
+ }, [packagingAccoSearchDetails, selectedPackagingAccoResultCode]);
52
+
53
+ const groupedRooms = useMemo(() => {
54
+ if (!selectedPackagingAccoSearchDetails?.rooms) return [];
55
+
56
+ return selectedPackagingAccoSearchDetails.rooms.map((room) => {
57
+ const groupedMap = new Map<string, GroupedAccommodation>();
58
+
59
+ room.options.forEach((option) => {
60
+ const key = option.accommodationCode;
61
+
62
+ if (!groupedMap.has(key)) {
63
+ groupedMap.set(key, {
64
+ accommodationCode: option.accommodationCode,
65
+ accommodationName: option.accommodationName,
66
+ regimes: []
67
+ });
68
+ }
69
+
70
+ groupedMap.get(key)?.regimes.push({
71
+ id: option.guid,
72
+ label: option.regimeName
73
+ });
74
+ });
75
+
76
+ return Array.from(groupedMap.values());
77
+ });
78
+ }, [selectedPackagingAccoSearchDetails]);
79
+
80
+ const getSelectedOptionForRoom = (roomIndex: number) => {
81
+ return selectedPackagingAccoSearchDetails?.rooms?.[roomIndex]?.options?.find((option) => option.isSelected);
82
+ };
83
+
84
+ const getSelectedOptionForAccommodation = (roomIndex: number, accommodationCode: string) => {
85
+ return selectedPackagingAccoSearchDetails?.rooms?.[roomIndex]?.options?.find(
86
+ (option) => option.accommodationCode === accommodationCode && option.isSelected
87
+ );
88
+ };
89
+
90
+ const handlePick = (roomIndex: number, selectedGuid?: string) => {
91
+ if (!packagingAccoSearchDetails || !selectedPackagingAccoSearchDetails) return;
92
+
93
+ const updatedPackagingAccoSearchDetails = packagingAccoSearchDetails.map((product) => {
94
+ if (product.code !== selectedPackagingAccoSearchDetails.code) {
95
+ return product;
96
+ }
97
+
98
+ const updatedRooms = product.rooms.map((room, currentRoomIndex) => {
99
+ if (currentRoomIndex !== roomIndex) {
100
+ return room;
101
+ }
102
+
103
+ return {
104
+ ...room,
105
+ options: room.options.map((option) => ({
106
+ ...option,
107
+ isSelected: option.guid === selectedGuid
108
+ }))
109
+ };
110
+ });
111
+
112
+ return {
113
+ ...product,
114
+ rooms: updatedRooms
115
+ };
116
+ });
117
+
118
+ dispatch(setPackagingAccoSearchDetails(updatedPackagingAccoSearchDetails));
119
+ };
120
+
121
+ const handleConfirm = () => {
122
+ if (isOpen) {
123
+ setIsOpen(false);
124
+ }
125
+ };
126
+
127
+ if (!selectedPackagingAccoSearchDetails) {
128
+ return null;
129
+ }
130
+
131
+ const calculateTotalPrice = () => {
132
+ const selectedOptions = selectedPackagingAccoSearchDetails.rooms.flatMap((room) => room.options.filter((option) => option.isSelected));
133
+ const totalPrice = selectedOptions.reduce((total, option) => total + (option.price || 0), 0);
134
+ return formatPrice(totalPrice, selectedPackagingAccoSearchDetails.currencyCode);
135
+ };
136
+
137
+ const getPriceDifference = (currentSelectedPrice: number | undefined, roomIndex: number, accommodationCode: string, regimeId?: string) => {
138
+ let targetPrice = 0;
139
+
140
+ const selectedOption = getSelectedOptionForAccommodation(roomIndex, accommodationCode);
141
+
142
+ if (selectedOption?.price) {
143
+ targetPrice = selectedOption.price;
144
+ } else {
145
+ const firstOption = selectedPackagingAccoSearchDetails.rooms[roomIndex].options.find((option) => option.accommodationCode === accommodationCode);
146
+ targetPrice = firstOption?.price || 0;
147
+ }
148
+
149
+ if (regimeId) {
150
+ const regimeOption = selectedPackagingAccoSearchDetails.rooms[roomIndex].options.find((option) => option.guid === regimeId);
151
+ targetPrice = regimeOption?.price || 0;
152
+ }
153
+
154
+ return targetPrice - (currentSelectedPrice || 0);
155
+ };
156
+
157
+ const formatPriceDifference = (difference: number, currencyCode: string) => {
158
+ if (difference === 0) {
159
+ return null;
160
+ }
161
+
162
+ const formattedAbsoluteValue = formatPrice(Math.abs(difference), currencyCode);
163
+ return `${difference > 0 ? '+' : '-'} ${formattedAbsoluteValue}`;
164
+ };
165
+
166
+ const getPriceDifferenceClassName = (difference: number) => {
167
+ if (difference < 0) {
168
+ return 'flyin__acco__price flyin__acco__price--decrease';
169
+ }
170
+
171
+ if (difference > 0) {
172
+ return 'flyin__acco__price flyin__acco__price--increase';
173
+ }
174
+
175
+ return 'flyin__acco__price';
176
+ };
177
+
178
+ const regimeFormatter = (roomIndex: number, accommodation: GroupedAccommodation, regimeId: string, label: string) => {
179
+ const roomOption = getSelectedOptionForRoom(roomIndex);
180
+
181
+ const difference = getPriceDifference(roomOption?.price, roomIndex, accommodation.accommodationCode, regimeId);
182
+
183
+ return `${label} ${difference !== 0 ? `(${formatPriceDifference(difference, selectedPackagingAccoSearchDetails.currencyCode)})` : ''}`;
184
+ };
185
+
186
+ return (
187
+ <>
188
+ <div className="flyin__content">
189
+ {groupedRooms.map((roomAccommodations, roomIndex) => {
190
+ const selectedRoomOption = getSelectedOptionForRoom(roomIndex);
191
+
192
+ return (
193
+ <div className="flyin__acco" key={`room-${roomIndex}`}>
194
+ <h3 className="flyin__acco__room-title">Room {roomIndex + 1}</h3>
195
+ <div className="flyin__acco__cards">
196
+ {roomAccommodations.map((accommodation) => {
197
+ const selectedOption = getSelectedOptionForAccommodation(roomIndex, accommodation.accommodationCode);
198
+
199
+ const priceDifference = getPriceDifference(selectedRoomOption?.price, roomIndex, accommodation.accommodationCode);
200
+ return (
201
+ <div className="flyin__acco__card" key={`${roomIndex}-${accommodation.accommodationCode}`}>
202
+ <div className="flyin__acco__content">
203
+ <h4 className="flyin__acco__title">{accommodation.accommodationName}</h4>
204
+ </div>
205
+
206
+ <div className="flyin__acco__footer">
207
+ <ItemPicker
208
+ items={accommodation.regimes}
209
+ selection={selectedOption?.regimeName}
210
+ label={''}
211
+ placeholder={'Select regime'}
212
+ classModifier=""
213
+ onPick={(selected, selectedGuid) => handlePick(roomIndex, selectedGuid)}
214
+ valueFormatter={(id, label) => regimeFormatter(roomIndex, accommodation, id, label)}
215
+ />
216
+
217
+ <div className="flyin__acco__footer__actions">
218
+ <button
219
+ className={
220
+ selectedRoomOption?.accommodationCode == accommodation.accommodationCode ? 'cta cta--select cta--selected' : 'cta cta--select'
221
+ }
222
+ onClick={() => {
223
+ handlePick(roomIndex, selectedOption ? selectedOption.guid : first(accommodation.regimes)?.id);
224
+ }}>
225
+ {selectedRoomOption?.accommodationCode == accommodation.accommodationCode
226
+ ? translations?.SHARED.SELECTED
227
+ : translations?.SHARED.SELECT}
228
+ </button>
229
+
230
+ <div className="flyin__acco__price__wrapper">
231
+ <span className={getPriceDifferenceClassName(priceDifference)}>
232
+ {formatPriceDifference(priceDifference, selectedPackagingAccoSearchDetails.currencyCode)}
233
+ </span>
234
+ </div>
235
+ </div>
236
+ </div>
237
+ </div>
238
+ );
239
+ })}
240
+ </div>
241
+ </div>
242
+ );
243
+ })}
244
+ </div>
245
+
246
+ <div className="flyin__footer">
247
+ <div className="flyin__footer__price">Total price: {calculateTotalPrice()}</div>
248
+
249
+ <div className="flyin__button-wrapper">
250
+ <button className="cta cta--select" onClick={handleConfirm}>
251
+ {translations.PRODUCT.BOOK_NOW}
252
+ </button>
253
+ </div>
254
+ </div>
255
+ </>
256
+ // Slicing with image and usps, not available in the current API response.
257
+ // <>
258
+ // <div className="flyin__content">
259
+ // <div className="flyin__acco">
260
+ // <div className="flyin__acco__cards">
261
+ // <div className="flyin__acco__card">
262
+ // <div className="flyin__acco__img__wrapper">
263
+ // <img src="https://cdn.pixabay.com/photo/2024/05/15/12/31/lake-8763490_1280.jpg" alt="river" className="flyin__acco__img" />
264
+ // <div className="flyin__acco__price__wrapper">
265
+ // <span className="flyin__acco__price__label">{translations?.SHARED.TOTAL_PRICE}</span>
266
+ // <span className="flyin__acco__price flyin__acco__price--increase">+1.764,00</span>
267
+ // </div>
268
+ // </div>
269
+
270
+ // <div className="flyin__acco__content">
271
+ // <div className="flyin__acco__header">
272
+ // <h4 className="flyin__acco__title">Deluxe Balcony Room</h4>
273
+ // <div className="flyin__acco__usps">
274
+ // <div className="flyin__acco__usp">
275
+ // <Icon name="ui-check" width={16} />
276
+ // <span className="flyin__acco__usp__text">Sea sight</span>
277
+ // </div>
278
+ // <div className="flyin__acco__usp">
279
+ // <Icon name="ui-check" width={16} />
280
+ // <span className="flyin__acco__usp__text">Free wifi</span>
281
+ // </div>
282
+ // <div className="flyin__acco__usp">
283
+ // <Icon name="ui-check" width={16} />
284
+ // <span className="flyin__acco__usp__text">Breakfast included</span>
285
+ // </div>
286
+ // <div className="flyin__acco__usp">
287
+ // <Icon name="ui-check" width={16} />
288
+ // <span className="flyin__acco__usp__text">Air conditioning</span>
289
+ // </div>
290
+ // <div className="flyin__acco__usp">
291
+ // <Icon name="ui-check" width={16} />
292
+ // <span className="flyin__acco__usp__text">Private bathroom</span>
293
+ // </div>
294
+ // </div>
295
+ // </div>
296
+ // </div>
297
+
298
+ // <div className="flyin__acco__footer">
299
+ // <ItemPicker
300
+ // items={travelClasses}
301
+ // selection={selectedTravelClass}
302
+ // label=" "
303
+ // placeholder={translations.QSM.TRAVEL_CLASS_PLACEHOLDER}
304
+ // classModifier="travel-class-picker__items"
305
+ // onPick={(item) => setSelectedTravelClass(item)}
306
+ // />
307
+ // <button className="cta cta--select">{translations?.SHARED.SELECT}</button>
308
+ // </div>
309
+ // </div>
310
+
311
+ // <div className="flyin__acco__card">
312
+ // <div className="flyin__acco__img__wrapper">
313
+ // <img src="https://cdn.pixabay.com/photo/2024/05/15/12/31/lake-8763490_1280.jpg" alt="river" className="flyin__acco__img" />
314
+ // <div className="flyin__acco__price__wrapper">
315
+ // <span className="flyin__acco__price__label">{translations?.SHARED.TOTAL_PRICE}</span>
316
+ // <span className="flyin__acco__price flyin__acco__price--increase">+1.764,00</span>
317
+ // </div>
318
+ // </div>
319
+
320
+ // <div className="flyin__acco__content">
321
+ // <div className="flyin__acco__header">
322
+ // <h4 className="flyin__acco__title">Standard Room</h4>
323
+ // <div className="flyin__acco__usps">
324
+ // <div className="flyin__acco__usp">
325
+ // <Icon name="ui-check" width={16} />
326
+ // <span className="flyin__acco__usp__text">Garden view</span>
327
+ // </div>
328
+ // <div className="flyin__acco__usp">
329
+ // <Icon name="ui-check" width={16} />
330
+ // <span className="flyin__acco__usp__text">Free wifi</span>
331
+ // </div>
332
+ // <div className="flyin__acco__usp">
333
+ // <Icon name="ui-check" width={16} />
334
+ // <span className="flyin__acco__usp__text">Double bed</span>
335
+ // </div>
336
+ // </div>
337
+ // </div>
338
+ // </div>
339
+
340
+ // <div className="flyin__acco__footer">
341
+ // <ItemPicker
342
+ // items={travelClasses}
343
+ // selection={selectedTravelClass}
344
+ // label=" "
345
+ // placeholder={translations.QSM.TRAVEL_CLASS_PLACEHOLDER}
346
+ // classModifier="travel-class-picker__items"
347
+ // onPick={setSelectedTravelClass}
348
+ // />
349
+ // <button className="cta cta--select">{translations?.SHARED.SELECT}</button>
350
+ // </div>
351
+ // </div>
352
+
353
+ // <div className="flyin__acco__card">
354
+ // <div className="flyin__acco__img__wrapper">
355
+ // <img src="https://cdn.pixabay.com/photo/2024/05/15/12/31/lake-8763490_1280.jpg" alt="river" className="flyin__acco__img" />
356
+ // <div className="flyin__acco__price__wrapper">
357
+ // <span className="flyin__acco__price__label">{translations?.SHARED.TOTAL_PRICE}</span>
358
+ // <span className="flyin__acco__price flyin__acco__price--increase">+1.764,00</span>
359
+ // </div>
360
+ // </div>
361
+
362
+ // <div className="flyin__acco__content">
363
+ // <div className="flyin__acco__header">
364
+ // <h4 className="flyin__acco__title">Suite</h4>
365
+ // <div className="flyin__acco__usps">
366
+ // <div className="flyin__acco__usp">
367
+ // <Icon name="ui-check" width={16} />
368
+ // <span className="flyin__acco__usp__text">Sea sight</span>
369
+ // </div>
370
+ // <div className="flyin__acco__usp">
371
+ // <Icon name="ui-check" width={16} />
372
+ // <span className="flyin__acco__usp__text">Free wifi</span>
373
+ // </div>
374
+ // <div className="flyin__acco__usp">
375
+ // <Icon name="ui-check" width={16} />
376
+ // <span className="flyin__acco__usp__text">Breakfast included</span>
377
+ // </div>
378
+ // <div className="flyin__acco__usp">
379
+ // <Icon name="ui-check" width={16} />
380
+ // <span className="flyin__acco__usp__text">Jacuzzi</span>
381
+ // </div>
382
+ // <div className="flyin__acco__usp">
383
+ // <Icon name="ui-check" width={16} />
384
+ // <span className="flyin__acco__usp__text">Private terrace</span>
385
+ // </div>
386
+ // </div>
387
+ // </div>
388
+ // </div>
389
+
390
+ // <div className="flyin__acco__footer">
391
+ // <ItemPicker
392
+ // items={travelClasses}
393
+ // selection={selectedTravelClass}
394
+ // label=" "
395
+ // placeholder={translations.QSM.TRAVEL_CLASS_PLACEHOLDER}
396
+ // classModifier="travel-class-picker__items"
397
+ // onPick={setSelectedTravelClass}
398
+ // />
399
+ // <button className="cta cta--select">{translations?.SHARED.SELECT}</button>
400
+ // </div>
401
+ // </div>
402
+ // </div>
403
+ // </div>
404
+
405
+ // {/* {isLoading && (
406
+ // <Spinner />
407
+ // )} */}
408
+ // </div>
409
+
410
+ // <div className="flyin__footer">
411
+ // <div className="flyin__footer__price">Total price: €</div>
412
+ // <div className="flyin__button-wrapper">
413
+ // <button className="cta cta--select" onClick={handleConfirm}>
414
+ // Toevoegen
415
+ // </button>
416
+ // </div>
417
+ // </div>
418
+ // </>
419
+ );
420
+ };
421
+
422
+ export default AccommodationFlyIn;