@qite/tide-booking-component 1.4.39 → 1.4.41

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 (91) hide show
  1. package/build/build-cjs/booking-wizard/types.d.ts +1 -0
  2. package/build/build-cjs/content/image-card-grid/index.d.ts +4 -0
  3. package/build/build-cjs/content/image-card-grid/types.d.ts +12 -0
  4. package/build/build-cjs/index.d.ts +2 -1
  5. package/build/build-cjs/index.js +9620 -2315
  6. package/build/build-cjs/qsm/store/qsm-slice.d.ts +4 -2
  7. package/build/build-cjs/qsm/types.d.ts +2 -1
  8. package/build/build-cjs/search-results/components/filters/flight-filters.d.ts +8 -0
  9. package/build/build-cjs/search-results/components/flight/flight-accommodation-results.d.ts +4 -1
  10. package/build/build-cjs/search-results/components/flight/flight-option.d.ts +7 -0
  11. package/build/build-cjs/search-results/components/flight/flight-search-context/index.d.ts +36 -0
  12. package/build/build-cjs/search-results/components/icon.d.ts +1 -0
  13. package/build/build-cjs/search-results/components/item-picker/index.d.ts +5 -3
  14. package/build/build-cjs/search-results/components/search-results-container/flight-search-results.d.ts +6 -0
  15. package/build/build-cjs/search-results/store/search-results-slice.d.ts +2 -0
  16. package/build/build-cjs/search-results/types.d.ts +31 -1
  17. package/build/build-cjs/search-results/utils/flight-utils.d.ts +16 -0
  18. package/build/build-cjs/shared/components/flyin.d.ts +9 -0
  19. package/build/build-cjs/shared/components/icon.d.ts +10 -0
  20. package/build/build-cjs/shared/types.d.ts +6 -0
  21. package/build/build-cjs/shared/utils/localization-util.d.ts +21 -0
  22. package/build/build-esm/booking-wizard/types.d.ts +1 -0
  23. package/build/build-esm/content/image-card-grid/index.d.ts +4 -0
  24. package/build/build-esm/content/image-card-grid/types.d.ts +12 -0
  25. package/build/build-esm/index.d.ts +2 -1
  26. package/build/build-esm/index.js +9496 -2304
  27. package/build/build-esm/qsm/store/qsm-slice.d.ts +4 -2
  28. package/build/build-esm/qsm/types.d.ts +2 -1
  29. package/build/build-esm/search-results/components/filters/flight-filters.d.ts +8 -0
  30. package/build/build-esm/search-results/components/flight/flight-accommodation-results.d.ts +4 -1
  31. package/build/build-esm/search-results/components/flight/flight-option.d.ts +7 -0
  32. package/build/build-esm/search-results/components/flight/flight-search-context/index.d.ts +36 -0
  33. package/build/build-esm/search-results/components/icon.d.ts +1 -0
  34. package/build/build-esm/search-results/components/item-picker/index.d.ts +5 -3
  35. package/build/build-esm/search-results/components/search-results-container/flight-search-results.d.ts +6 -0
  36. package/build/build-esm/search-results/store/search-results-slice.d.ts +2 -0
  37. package/build/build-esm/search-results/types.d.ts +31 -1
  38. package/build/build-esm/search-results/utils/flight-utils.d.ts +16 -0
  39. package/build/build-esm/shared/components/flyin.d.ts +9 -0
  40. package/build/build-esm/shared/components/icon.d.ts +10 -0
  41. package/build/build-esm/shared/types.d.ts +6 -0
  42. package/build/build-esm/shared/utils/localization-util.d.ts +21 -0
  43. package/package.json +4 -3
  44. package/rollup.config.js +2 -2
  45. package/src/booking-product/components/dates.tsx +1 -1
  46. package/src/booking-wizard/features/booking/booking-slice.ts +4 -2
  47. package/src/booking-wizard/types.ts +1 -0
  48. package/src/content/components/slider.tsx +1 -1
  49. package/src/content/image-card-grid/index.tsx +34 -0
  50. package/src/content/image-card-grid/types.ts +13 -0
  51. package/src/index.ts +2 -1
  52. package/src/qsm/components/QSMContainer/qsm-container.tsx +38 -26
  53. package/src/qsm/components/search-input-group/index.tsx +0 -1
  54. package/src/qsm/components/travel-input/index.tsx +4 -4
  55. package/src/qsm/components/travel-input-group/index.tsx +4 -3
  56. package/src/qsm/store/qsm-slice.ts +7 -1
  57. package/src/qsm/types.ts +3 -1
  58. package/src/search-results/components/filters/flight-filters.tsx +671 -0
  59. package/src/search-results/components/flight/flight-accommodation-results.tsx +20 -562
  60. package/src/search-results/components/flight/flight-option.tsx +243 -0
  61. package/src/search-results/components/flight/flight-search-context/index.tsx +508 -0
  62. package/src/search-results/components/hotel/hotel-card.tsx +0 -1
  63. package/src/search-results/components/icon.tsx +84 -44
  64. package/src/search-results/components/item-picker/index.tsx +16 -11
  65. package/src/search-results/components/search-results-container/flight-search-results.tsx +120 -0
  66. package/src/search-results/components/search-results-container/search-results-container.tsx +85 -70
  67. package/src/search-results/store/search-results-slice.ts +6 -0
  68. package/src/search-results/types.ts +37 -1
  69. package/src/search-results/utils/flight-utils.ts +106 -0
  70. package/src/shared/components/flyin.tsx +622 -0
  71. package/src/shared/components/icon.tsx +826 -0
  72. package/src/shared/translations/ar-SA.json +13 -1
  73. package/src/shared/translations/da-DK.json +13 -1
  74. package/src/shared/translations/de-DE.json +13 -1
  75. package/src/shared/translations/en-GB.json +13 -1
  76. package/src/shared/translations/es-ES.json +13 -1
  77. package/src/shared/translations/fr-BE.json +13 -1
  78. package/src/shared/translations/fr-FR.json +13 -1
  79. package/src/shared/translations/is-IS.json +13 -1
  80. package/src/shared/translations/it-IT.json +13 -1
  81. package/src/shared/translations/ja-JP.json +13 -1
  82. package/src/shared/translations/nl-BE.json +13 -1
  83. package/src/shared/translations/nl-NL.json +13 -1
  84. package/src/shared/translations/no-NO.json +13 -1
  85. package/src/shared/translations/pl-PL.json +13 -1
  86. package/src/shared/translations/pt-PT.json +13 -1
  87. package/src/shared/translations/sv-SE.json +13 -1
  88. package/src/shared/types.ts +7 -0
  89. package/src/shared/utils/localization-util.ts +71 -0
  90. package/styles/booking-search-results.scss +1 -0
  91. package/styles/components/_flyin.scss +541 -0
@@ -314,6 +314,18 @@
314
314
  "STOP_TIME": "مدة التوقف",
315
315
  "ACCOMMODATION": "الإقامة",
316
316
  "VIEW_DETAILS": "عرض التفاصيل",
317
- "NIGHTS": "ليالٍ"
317
+ "NIGHTS": "ليالٍ",
318
+ "MORNING_RANGE": "الصباح",
319
+ "AFTERNOON_RANGE": "بعد الظهر",
320
+ "EVENING_RANGE": "المساء",
321
+ "NIGHT_RANGE": "الليل",
322
+ "DEPARTURE_RANGE": "نطاق المغادرة",
323
+ "DEPARTURE_AIRPORTS": "مطارات المغادرة",
324
+ "ARRIVAL_AIRPORTS": "مطارات الوصول",
325
+ "PRICE": "السعر",
326
+ "DEPARTURE_TIME_ASC": "وقت المغادرة تصاعدياً",
327
+ "DEPARTURE_TIME_DESC": "وقت المغادرة تنازلياً",
328
+ "DURATION_ASC": "المدة تصاعدياً",
329
+ "DURATION_DESC": "المدة تنازلياً"
318
330
  }
319
331
  }
@@ -314,6 +314,18 @@
314
314
  "STOP_TIME": "Skiftetid",
315
315
  "ACCOMMODATION": "Indkvartering",
316
316
  "VIEW_DETAILS": "Se detaljer",
317
- "NIGHTS": "nætter"
317
+ "NIGHTS": "nætter",
318
+ "MORNING_RANGE": "Morgen",
319
+ "AFTERNOON_RANGE": "Eftermiddag",
320
+ "EVENING_RANGE": "Aften",
321
+ "NIGHT_RANGE": "Nat",
322
+ "DEPARTURE_RANGE": "Afgangstidspunkt",
323
+ "DEPARTURE_AIRPORTS": "Afgangslufthavne",
324
+ "ARRIVAL_AIRPORTS": "Ankomstlufthavne",
325
+ "PRICE": "Pris",
326
+ "DEPARTURE_TIME_ASC": "Afgangstid stigende",
327
+ "DEPARTURE_TIME_DESC": "Afgangstid faldende",
328
+ "DURATION_ASC": "Varighed stigende",
329
+ "DURATION_DESC": "Varighed faldende"
318
330
  }
319
331
  }
@@ -291,6 +291,10 @@
291
291
  "SEARCHRESULTCTA": "Details anzeigen",
292
292
  "SORTBY": "Sortieren nach",
293
293
  "PRICE_ASC": "Preis (aufsteigend)",
294
+ "DEPARTURE_TIME_ASC": "Abflugzeit aufsteigend",
295
+ "DEPARTURE_TIME_DESC": "Abflugzeit absteigend",
296
+ "DURATION_ASC": "Dauer aufsteigend",
297
+ "DURATION_DESC": "Dauer absteigend",
294
298
  "PRICE_DESC": "Preis (absteigend)",
295
299
  "DEPARTURE_ASC": "Abreisedatum (früheste zuerst)",
296
300
  "FILTERS": "Filter",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Umsteigezeit",
315
319
  "ACCOMMODATION": "Unterkunft",
316
320
  "VIEW_DETAILS": "Details anzeigen",
317
- "NIGHTS": "Nächte"
321
+ "NIGHTS": "Nächte",
322
+ "MORNING_RANGE": "Morgen",
323
+ "AFTERNOON_RANGE": "Nachmittag",
324
+ "EVENING_RANGE": "Abend",
325
+ "NIGHT_RANGE": "Nacht",
326
+ "DEPARTURE_RANGE": "Abflugzeitraum",
327
+ "DEPARTURE_AIRPORTS": "Abflughäfen",
328
+ "ARRIVAL_AIRPORTS": "Ankunftsflughäfen",
329
+ "PRICE": "Preis"
318
330
  }
319
331
  }
@@ -296,6 +296,10 @@
296
296
  "SORTBY": "Sort by",
297
297
  "PRICE_ASC": "Price (low to high)",
298
298
  "PRICE_DESC": "Price (high to low)",
299
+ "DEPARTURE_TIME_ASC": "Departure time ascending",
300
+ "DEPARTURE_TIME_DESC": "Departure time descending",
301
+ "DURATION_ASC": "Duration ascending",
302
+ "DURATION_DESC": "Duration descending",
299
303
  "DEPARTURE_ASC": "Departure date (soonest first)",
300
304
  "FILTERS": "Filters",
301
305
  "SHOW_ITINERARY": "Show itinerary",
@@ -318,6 +322,14 @@
318
322
  "STOP_TIME": "Change time",
319
323
  "ACCOMMODATION": "Accommodation",
320
324
  "VIEW_DETAILS": "View details",
321
- "NIGHTS": "nights"
325
+ "NIGHTS": "nights",
326
+ "PRICE": "Price",
327
+ "MORNING_RANGE": "Morning",
328
+ "AFTERNOON_RANGE": "Afternoon",
329
+ "EVENING_RANGE": "Evening",
330
+ "NIGHT_RANGE": "Night",
331
+ "DEPARTURE_RANGE": "Departure range",
332
+ "DEPARTURE_AIRPORTS": "Departure airports",
333
+ "ARRIVAL_AIRPORTS": "Arrival airports"
322
334
  }
323
335
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Ordenar por",
293
293
  "PRICE_ASC": "Precio (de menor a mayor)",
294
294
  "PRICE_DESC": "Precio (de mayor a menor)",
295
+ "DEPARTURE_TIME_ASC": "Hora de salida ascendente",
296
+ "DEPARTURE_TIME_DESC": "Hora de salida descendente",
297
+ "DURATION_ASC": "Duración ascendente",
298
+ "DURATION_DESC": "Duración descendente",
295
299
  "DEPARTURE_ASC": "Fecha de salida (más próxima primero)",
296
300
  "FILTERS": "Filtros",
297
301
  "SHOW_ITINERARY": "Mostrar itinerario",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Tiempo de escala",
315
319
  "ACCOMMODATION": "Alojamiento",
316
320
  "VIEW_DETAILS": "Ver detalles",
317
- "NIGHTS": "noches"
321
+ "NIGHTS": "noches",
322
+ "MORNING_RANGE": "Mañana",
323
+ "AFTERNOON_RANGE": "Tarde",
324
+ "EVENING_RANGE": "Noche",
325
+ "NIGHT_RANGE": "Noche",
326
+ "DEPARTURE_RANGE": "Franja de salida",
327
+ "DEPARTURE_AIRPORTS": "Aeropuertos de salida",
328
+ "ARRIVAL_AIRPORTS": "Aeropuertos de llegada",
329
+ "PRICE": "Precio"
318
330
  }
319
331
  }
@@ -296,6 +296,10 @@
296
296
  "SORTBY": "Trier par",
297
297
  "PRICE_ASC": "Prix (croissant)",
298
298
  "PRICE_DESC": "Prix (décroissant)",
299
+ "DEPARTURE_TIME_ASC": "Heure de départ croissante",
300
+ "DEPARTURE_TIME_DESC": "Heure de départ décroissante",
301
+ "DURATION_ASC": "Durée croissante",
302
+ "DURATION_DESC": "Durée décroissante",
299
303
  "DEPARTURE_ASC": "Date de départ (la plus proche d’abord)",
300
304
  "FILTERS": "Filtres",
301
305
  "SHOW_ITINERARY": "Afficher l’itinéraire",
@@ -318,6 +322,14 @@
318
322
  "STOP_TIME": "Temps d’escale",
319
323
  "ACCOMMODATION": "Hébergement",
320
324
  "VIEW_DETAILS": "Voir les détails",
321
- "NIGHTS": "nuits"
325
+ "NIGHTS": "nuits",
326
+ "MORNING_RANGE": "Matin",
327
+ "AFTERNOON_RANGE": "Après-midi",
328
+ "EVENING_RANGE": "Soir",
329
+ "NIGHT_RANGE": "Nuit",
330
+ "DEPARTURE_RANGE": "Plage de départ",
331
+ "DEPARTURE_AIRPORTS": "Aéroports de départ",
332
+ "ARRIVAL_AIRPORTS": "Aéroports d’arrivée",
333
+ "PRICE": "Prix"
322
334
  }
323
335
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Trier par",
293
293
  "PRICE_ASC": "Prix (croissant)",
294
294
  "PRICE_DESC": "Prix (décroissant)",
295
+ "DEPARTURE_TIME_ASC": "Heure de départ croissante",
296
+ "DEPARTURE_TIME_DESC": "Heure de départ décroissante",
297
+ "DURATION_ASC": "Durée croissante",
298
+ "DURATION_DESC": "Durée décroissante",
295
299
  "DEPARTURE_ASC": "Date de départ (la plus proche d’abord)",
296
300
  "FILTERS": "Filtres",
297
301
  "SHOW_ITINERARY": "Afficher l’itinéraire",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Temps d’escale",
315
319
  "ACCOMMODATION": "Hébergement",
316
320
  "VIEW_DETAILS": "Voir les détails",
317
- "NIGHTS": "nuits"
321
+ "NIGHTS": "nuits",
322
+ "MORNING_RANGE": "Matin",
323
+ "AFTERNOON_RANGE": "Après-midi",
324
+ "EVENING_RANGE": "Soir",
325
+ "NIGHT_RANGE": "Nuit",
326
+ "DEPARTURE_RANGE": "Plage de départ",
327
+ "DEPARTURE_AIRPORTS": "Aéroports de départ",
328
+ "ARRIVAL_AIRPORTS": "Aéroports d’arrivée",
329
+ "PRICE": "Prix"
318
330
  }
319
331
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Raða eftir",
293
293
  "PRICE_ASC": "Verð (lægst til hæst)",
294
294
  "PRICE_DESC": "Verð (hæst til lægst)",
295
+ "DEPARTURE_TIME_ASC": "Brottfarartími hækkandi",
296
+ "DEPARTURE_TIME_DESC": "Brottfarartími lækkandi",
297
+ "DURATION_ASC": "Lengd hækkandi",
298
+ "DURATION_DESC": "Lengd lækkandi",
295
299
  "DEPARTURE_ASC": "Brottfarardagur (nærst fyrst)",
296
300
  "FILTERS": "Síur",
297
301
  "SHOW_ITINERARY": "Sýna ferðaráætlun",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Skipti tími",
315
319
  "ACCOMMODATION": "Gisting",
316
320
  "VIEW_DETAILS": "Skoða upplýsingar",
317
- "NIGHTS": "nætur"
321
+ "NIGHTS": "nætur",
322
+ "MORNING_RANGE": "Morgunn",
323
+ "AFTERNOON_RANGE": "Síðdegi",
324
+ "EVENING_RANGE": "Kvöld",
325
+ "NIGHT_RANGE": "Nótt",
326
+ "DEPARTURE_RANGE": "Brottfarartímabil",
327
+ "DEPARTURE_AIRPORTS": "Brottfararflugvellir",
328
+ "ARRIVAL_AIRPORTS": "Komuflugvellir",
329
+ "PRICE": "Verð"
318
330
  }
319
331
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Ordina per",
293
293
  "PRICE_ASC": "Prezzo (dal più basso al più alto)",
294
294
  "PRICE_DESC": "Prezzo (dal più alto al più basso)",
295
+ "DEPARTURE_TIME_ASC": "Orario di partenza crescente",
296
+ "DEPARTURE_TIME_DESC": "Orario di partenza decrescente",
297
+ "DURATION_ASC": "Durata crescente",
298
+ "DURATION_DESC": "Durata decrescente",
295
299
  "DEPARTURE_ASC": "Data di partenza (prima la più vicina)",
296
300
  "FILTERS": "Filtri",
297
301
  "SHOW_ITINERARY": "Mostra itinerario",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Tempo di cambio",
315
319
  "ACCOMMODATION": "Alloggio",
316
320
  "VIEW_DETAILS": "Visualizza dettagli",
317
- "NIGHTS": "notti"
321
+ "NIGHTS": "notti",
322
+ "MORNING_RANGE": "Mattina",
323
+ "AFTERNOON_RANGE": "Pomeriggio",
324
+ "EVENING_RANGE": "Sera",
325
+ "NIGHT_RANGE": "Notte",
326
+ "DEPARTURE_RANGE": "Fascia di partenza",
327
+ "DEPARTURE_AIRPORTS": "Aeroporti di partenza",
328
+ "ARRIVAL_AIRPORTS": "Aeroporti di arrivo",
329
+ "PRICE": "Prezzo"
318
330
  }
319
331
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "並び替え",
293
293
  "PRICE_ASC": "価格(安い順)",
294
294
  "PRICE_DESC": "価格(高い順)",
295
+ "DEPARTURE_TIME_ASC": "出発時刻(昇順)",
296
+ "DEPARTURE_TIME_DESC": "出発時刻(降順)",
297
+ "DURATION_ASC": "所要時間(昇順)",
298
+ "DURATION_DESC": "所要時間(降順)",
295
299
  "DEPARTURE_ASC": "出発日(早い順)",
296
300
  "FILTERS": "フィルター",
297
301
  "SHOW_ITINERARY": "旅程を表示",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "乗り換え時間",
315
319
  "ACCOMMODATION": "宿泊",
316
320
  "VIEW_DETAILS": "詳細を見る",
317
- "NIGHTS": "泊"
321
+ "NIGHTS": "泊",
322
+ "MORNING_RANGE": "朝",
323
+ "AFTERNOON_RANGE": "午後",
324
+ "EVENING_RANGE": "夕方",
325
+ "NIGHT_RANGE": "夜",
326
+ "DEPARTURE_RANGE": "出発時間帯",
327
+ "DEPARTURE_AIRPORTS": "出発空港",
328
+ "ARRIVAL_AIRPORTS": "到着空港",
329
+ "PRICE": "価格"
318
330
  }
319
331
  }
@@ -296,6 +296,10 @@
296
296
  "SORTBY": "Sorteren op",
297
297
  "PRICE_ASC": "Prijs (laag naar hoog)",
298
298
  "PRICE_DESC": "Prijs (hoog naar laag)",
299
+ "DEPARTURE_TIME_ASC": "Vertrektijd oplopend",
300
+ "DEPARTURE_TIME_DESC": "Vertrektijd aflopend",
301
+ "DURATION_ASC": "Duur oplopend",
302
+ "DURATION_DESC": "Duur aflopend",
299
303
  "DEPARTURE_ASC": "Vertrekdatum (dichtstbij eerst)",
300
304
  "FILTERS": "Filters",
301
305
  "SHOW_ITINERARY": "Toon reisplan",
@@ -318,6 +322,14 @@
318
322
  "STOP_TIME": "Wachttijd",
319
323
  "ACCOMMODATION": "Accommodatie",
320
324
  "VIEW_DETAILS": "Bekijk details",
321
- "NIGHTS": "nachten"
325
+ "NIGHTS": "nachten",
326
+ "MORNING_RANGE": "Ochtend",
327
+ "AFTERNOON_RANGE": "Namiddag",
328
+ "EVENING_RANGE": "Avond",
329
+ "NIGHT_RANGE": "Nacht",
330
+ "DEPARTURE_RANGE": "Vertrektijdstip",
331
+ "DEPARTURE_AIRPORTS": "Vertrekluchthavens",
332
+ "ARRIVAL_AIRPORTS": "Aankomstluchthavens",
333
+ "PRICE": "Prijs"
322
334
  }
323
335
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Sorteren op",
293
293
  "PRICE_ASC": "Prijs (laag naar hoog)",
294
294
  "PRICE_DESC": "Prijs (hoog naar laag)",
295
+ "DEPARTURE_TIME_ASC": "Vertrektijd oplopend",
296
+ "DEPARTURE_TIME_DESC": "Vertrektijd aflopend",
297
+ "DURATION_ASC": "Duur oplopend",
298
+ "DURATION_DESC": "Duur aflopend",
295
299
  "DEPARTURE_ASC": "Vertrekdatum (dichtstbij eerst)",
296
300
  "FILTERS": "Filters",
297
301
  "SHOW_ITINERARY": "Toon reisplan",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Wachttijd",
315
319
  "ACCOMMODATION": "Accommodatie",
316
320
  "VIEW_DETAILS": "Bekijk details",
317
- "NIGHTS": "nachten"
321
+ "NIGHTS": "nachten",
322
+ "MORNING_RANGE": "Ochtend",
323
+ "AFTERNOON_RANGE": "Namiddag",
324
+ "EVENING_RANGE": "Avond",
325
+ "NIGHT_RANGE": "Nacht",
326
+ "DEPARTURE_RANGE": "Vertrektijdstip",
327
+ "DEPARTURE_AIRPORTS": "Vertrekluchthavens",
328
+ "ARRIVAL_AIRPORTS": "Aankomstluchthavens",
329
+ "PRICE": "Prijs"
318
330
  }
319
331
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Sorter etter",
293
293
  "PRICE_ASC": "Pris (lav til høy)",
294
294
  "PRICE_DESC": "Pris (høy til lav)",
295
+ "DEPARTURE_TIME_ASC": "Avgangstid stigende",
296
+ "DEPARTURE_TIME_DESC": "Avgangstid synkende",
297
+ "DURATION_ASC": "Varighet stigende",
298
+ "DURATION_DESC": "Varighet synkende",
295
299
  "DEPARTURE_ASC": "Avreisedato (nærmeste først)",
296
300
  "FILTERS": "Filtre",
297
301
  "SHOW_ITINERARY": "Vis reiserute",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Byttetid",
315
319
  "ACCOMMODATION": "Overnatting",
316
320
  "VIEW_DETAILS": "Se detaljer",
317
- "NIGHTS": "netter"
321
+ "NIGHTS": "netter",
322
+ "MORNING_RANGE": "Morgen",
323
+ "AFTERNOON_RANGE": "Ettermiddag",
324
+ "EVENING_RANGE": "Kveld",
325
+ "NIGHT_RANGE": "Natt",
326
+ "DEPARTURE_RANGE": "Avgangsperiode",
327
+ "DEPARTURE_AIRPORTS": "Avgangsflyplasser",
328
+ "ARRIVAL_AIRPORTS": "Ankomstflyplasser",
329
+ "PRICE": "Pris"
318
330
  }
319
331
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Sortuj według",
293
293
  "PRICE_ASC": "Cena (od najniższej do najwyższej)",
294
294
  "PRICE_DESC": "Cena (od najwyższej do najniższej)",
295
+ "DEPARTURE_TIME_ASC": "Godzina wylotu rosnąco",
296
+ "DEPARTURE_TIME_DESC": "Godzina wylotu malejąco",
297
+ "DURATION_ASC": "Czas trwania rosnąco",
298
+ "DURATION_DESC": "Czas trwania malejąco",
295
299
  "DEPARTURE_ASC": "Data wyjazdu (najbliższa najpierw)",
296
300
  "FILTERS": "Filtry",
297
301
  "SHOW_ITINERARY": "Pokaż plan podróży",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Czas przesiadki",
315
319
  "ACCOMMODATION": "Zakwaterowanie",
316
320
  "VIEW_DETAILS": "Zobacz szczegóły",
317
- "NIGHTS": "noce"
321
+ "NIGHTS": "noce",
322
+ "MORNING_RANGE": "Poranek",
323
+ "AFTERNOON_RANGE": "Popołudnie",
324
+ "EVENING_RANGE": "Wieczór",
325
+ "NIGHT_RANGE": "Noc",
326
+ "DEPARTURE_RANGE": "Zakres wylotu",
327
+ "DEPARTURE_AIRPORTS": "Lotniska wylotu",
328
+ "ARRIVAL_AIRPORTS": "Lotniska przylotu",
329
+ "PRICE": "Cena"
318
330
  }
319
331
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Ordenar por",
293
293
  "PRICE_ASC": "Preço (do mais baixo para o mais alto)",
294
294
  "PRICE_DESC": "Preço (do mais alto para o mais baixo)",
295
+ "DEPARTURE_TIME_ASC": "Hora de partida crescente",
296
+ "DEPARTURE_TIME_DESC": "Hora de partida decrescente",
297
+ "DURATION_ASC": "Duração crescente",
298
+ "DURATION_DESC": "Duração decrescente",
295
299
  "DEPARTURE_ASC": "Data de partida (mais próxima primeiro)",
296
300
  "FILTERS": "Filtros",
297
301
  "SHOW_ITINERARY": "Mostrar itinerário",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Tempo de escala",
315
319
  "ACCOMMODATION": "Alojamento",
316
320
  "VIEW_DETAILS": "Ver detalhes",
317
- "NIGHTS": "noites"
321
+ "NIGHTS": "noites",
322
+ "MORNING_RANGE": "Manhã",
323
+ "AFTERNOON_RANGE": "Tarde",
324
+ "EVENING_RANGE": "Noite",
325
+ "NIGHT_RANGE": "Noite",
326
+ "DEPARTURE_RANGE": "Intervalo de partida",
327
+ "DEPARTURE_AIRPORTS": "Aeroportos de partida",
328
+ "ARRIVAL_AIRPORTS": "Aeroportos de chegada",
329
+ "PRICE": "Preço"
318
330
  }
319
331
  }
@@ -292,6 +292,10 @@
292
292
  "SORTBY": "Sortera efter",
293
293
  "PRICE_ASC": "Pris (lågt till högt)",
294
294
  "PRICE_DESC": "Pris (högt till lågt)",
295
+ "DEPARTURE_TIME_ASC": "Avgångstid stigande",
296
+ "DEPARTURE_TIME_DESC": "Avgångstid fallande",
297
+ "DURATION_ASC": "Varaktighet stigande",
298
+ "DURATION_DESC": "Varaktighet fallande",
295
299
  "DEPARTURE_ASC": "Avresedatum (närmast först)",
296
300
  "FILTERS": "Filter",
297
301
  "SHOW_ITINERARY": "Visa resplan",
@@ -314,6 +318,14 @@
314
318
  "STOP_TIME": "Bytestid",
315
319
  "ACCOMMODATION": "Boende",
316
320
  "VIEW_DETAILS": "Visa detaljer",
317
- "NIGHTS": "nätter"
321
+ "NIGHTS": "nätter",
322
+ "MORNING_RANGE": "Morgon",
323
+ "AFTERNOON_RANGE": "Eftermiddag",
324
+ "EVENING_RANGE": "Kväll",
325
+ "NIGHT_RANGE": "Natt",
326
+ "DEPARTURE_RANGE": "Avgångsintervall",
327
+ "DEPARTURE_AIRPORTS": "Avgångsflygplatser",
328
+ "ARRIVAL_AIRPORTS": "Ankomstflygplatser",
329
+ "PRICE": "Pris"
318
330
  }
319
331
  }
@@ -2,3 +2,10 @@ export interface ApiSettingsState {
2
2
  apiUrl: string;
3
3
  apiKey: string;
4
4
  }
5
+
6
+ export enum DepartureRange {
7
+ Morning = 0,
8
+ Afternoon = 1,
9
+ Evening = 2,
10
+ Night = 3
11
+ }
@@ -1,4 +1,5 @@
1
1
  import { arSA, da, de, enGB, es, fr, is, it, nl, nb, pl, pt, sv, ja } from 'date-fns/locale';
2
+ import { format as formatDateFns } from 'date-fns';
2
3
 
3
4
  export const languages = [
4
5
  'ar-SA',
@@ -46,6 +47,8 @@ import plJson from '../translations/pl-PL.json';
46
47
  import ptJson from '../translations/pt-PT.json';
47
48
  import svJson from '../translations/sv-SE.json';
48
49
  import jaJson from '../translations/ja-JP.json';
50
+ import { DateStruct } from '@qite/tide-client';
51
+ import { DepartureRange } from '../types';
49
52
 
50
53
  export const getTranslations = (language: string) => {
51
54
  switch (language) {
@@ -168,3 +171,71 @@ export const formatDate = (date: Date) =>
168
171
  month: 'short',
169
172
  year: '2-digit'
170
173
  }).format(new Date(date));
174
+
175
+ export const dateToDateStruct = (date: Date | undefined): DateStruct => {
176
+ if (date === undefined) {
177
+ return { year: 0, month: 0, day: 0 };
178
+ }
179
+ return {
180
+ year: date.getFullYear(),
181
+ month: date.getMonth() + 1, // Months are 0-based in JS
182
+ day: date.getDate()
183
+ };
184
+ };
185
+
186
+ export const timeFromDateTime = (dateTime: Date | undefined): string => {
187
+ if (!dateTime) {
188
+ return '';
189
+ }
190
+ const date = new Date(dateTime);
191
+ const hours = date.getHours();
192
+ const minutes = date.getMinutes();
193
+ return `${hours}:${minutes < 10 ? '0' : ''}${minutes}`;
194
+ };
195
+
196
+ export const longFormatDate = (dateTime: Date | undefined, language: string): string => {
197
+ if (!dateTime) {
198
+ return '';
199
+ }
200
+ const locale = getLocale(language);
201
+ const formattedDate = formatDateFns(new Date(dateTime), 'eee dd MMM yy', { locale });
202
+ return formattedDate;
203
+ };
204
+
205
+ export const durationTicksInHoursString = (durationInTicks: number): string => {
206
+ const totalMinutes = Math.floor(durationInTicks / 10_000 / 1000 / 60);
207
+ return minutesToHoursString(totalMinutes);
208
+ };
209
+
210
+ export const durationInTicksInMinutes = (durationInTicks: number): number => {
211
+ const totalMinutes = Math.floor(durationInTicks / 10_000 / 1000 / 60);
212
+ return totalMinutes;
213
+ };
214
+
215
+ export const minutesToHoursString = (totalMinutes: number): string => {
216
+ const hours = Math.floor(totalMinutes / 60);
217
+ const minutes = totalMinutes % 60;
218
+
219
+ const paddedMinutes = minutes.toString().padStart(2, '0');
220
+
221
+ return `${hours.toString()} h ${paddedMinutes}`;
222
+ };
223
+
224
+ export const rangeFromDateTimeInMinutes = (dateTime: Date | undefined): DepartureRange => {
225
+ if (!dateTime) {
226
+ return DepartureRange.Morning;
227
+ }
228
+ const date = new Date(dateTime);
229
+ const hours = date.getHours();
230
+ const minutes = hours * 60 + date.getMinutes();
231
+ switch (true) {
232
+ case minutes >= 300 && minutes < 720:
233
+ return DepartureRange.Morning;
234
+ case minutes >= 720 && minutes < 1080:
235
+ return DepartureRange.Afternoon;
236
+ case minutes >= 1080 && minutes < 1440:
237
+ return DepartureRange.Evening;
238
+ default:
239
+ return DepartureRange.Night;
240
+ }
241
+ };
@@ -15,6 +15,7 @@
15
15
  @import './components/passenger-picker';
16
16
  @import './components/flight-option';
17
17
  @import './components/search';
18
+ @import './components/flyin';
18
19
 
19
20
  @extend %reset;
20
21
  @include body;