@odynn/awayz-flights 0.9.1 → 0.9.3

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 (70) hide show
  1. package/dist/BookingOption-CkvQdhKK.js +182 -0
  2. package/dist/DateFormats-Db0j7Cpe.js +15 -0
  3. package/dist/assets/BookingOption.css +1 -0
  4. package/dist/assets/FlightResult.css +1 -1
  5. package/dist/assets/HorizontalScroller.css +1 -0
  6. package/dist/components/BookingOption/BookingOption.js +15 -0
  7. package/dist/components/FlightItinerary/FlightItinerary.js +248 -7
  8. package/dist/components/FlightResult/FlightResult.js +370 -14
  9. package/dist/components/HorizontalScroller/HorizontalScroller.js +74 -0
  10. package/dist/components/index.js +8 -2
  11. package/dist/hooks/useFlightSearch/useFlightSearch.js +177 -157
  12. package/dist/iconBase-DSKTHwal.js +112 -0
  13. package/dist/index-BUY1nabz.js +15 -0
  14. package/dist/index-B_j9TSQq.js +47 -0
  15. package/dist/keys-Chup9jep.js +4 -0
  16. package/dist/lib/components/BookingOption/BookingOption.d.ts +23 -0
  17. package/dist/lib/components/FlightResult/FlightResult.d.ts +4 -2
  18. package/dist/lib/components/HorizontalScroller/HorizontalScroller.d.ts +7 -0
  19. package/dist/lib/components/index.d.ts +1 -0
  20. package/dist/lib/hooks/useFlightSearch/useFlightSearch.d.ts +6 -1
  21. package/dist/lib/hooks/useFlightSearch/useFlightSearch.types.d.ts +3 -0
  22. package/dist/lib/stores/useFlightStore.d.ts +3 -1
  23. package/dist/lib/utils/flightUtils.d.ts +14 -0
  24. package/dist/main.js +38 -33
  25. package/dist/stores/useFlightStore.js +14 -10
  26. package/dist/utils/flightUtils.js +17 -16
  27. package/lib/components/BookingOption/BookingOption.tsx +240 -0
  28. package/lib/components/BookingOption/_styles.booking-option.scss +69 -0
  29. package/lib/components/FlightItinerary/FlightItinerary.tsx +290 -0
  30. package/lib/components/FlightItinerary/_styles.flight-itinerary.scss +102 -0
  31. package/lib/components/FlightResult/FlightResult.stories.tsx +495 -0
  32. package/lib/components/FlightResult/FlightResult.tsx +612 -0
  33. package/lib/components/FlightResult/_styles.flight-result.scss +408 -0
  34. package/lib/components/FlightResult/mocks/DefaultFlightData.args.json +645 -0
  35. package/lib/components/FlightResult/mocks/NoCabinClassFlightData.args.json +310 -0
  36. package/lib/components/FlightResult/mocks/index.ts +4 -0
  37. package/lib/components/HorizontalScroller/HorizontalScroller.tsx +118 -0
  38. package/lib/components/HorizontalScroller/_styles.horizontal-scroller.scss +79 -0
  39. package/lib/components/index.ts +2 -0
  40. package/lib/constants/endpoints.ts +13 -0
  41. package/lib/enums/EPaymentType.ts +4 -0
  42. package/lib/enums/index.ts +1 -0
  43. package/lib/hooks/index.ts +10 -0
  44. package/lib/hooks/useAirportSearch/useAirportSearch.ts +24 -0
  45. package/lib/hooks/useAirportSearch/useAirportSearch.types.ts +12 -0
  46. package/lib/hooks/useFlightSearch/useFlightSearch.ts +488 -0
  47. package/lib/hooks/useFlightSearch/useFlightSearch.types.ts +254 -0
  48. package/lib/main.ts +51 -0
  49. package/lib/services/flights/FlightsService.ts +171 -0
  50. package/lib/services/flights/FlightsService.types.ts +244 -0
  51. package/lib/services/wallet/WalletService.ts +60 -0
  52. package/lib/services/wallet/WalletService.types.ts +159 -0
  53. package/lib/stores/useFlightStore.ts +35 -0
  54. package/lib/styles/_animations.scss +366 -0
  55. package/lib/styles/_colours.scss +20 -0
  56. package/lib/styles/_fonts.scss +18 -0
  57. package/lib/styles/_layout.scss +88 -0
  58. package/lib/styles/_mixins.scss +34 -0
  59. package/lib/styles/_shared.scss +116 -0
  60. package/lib/styles/index.scss +4 -0
  61. package/lib/types/ECabinClass.ts +46 -0
  62. package/lib/types/enums.ts +10 -0
  63. package/lib/types/index.ts +1 -0
  64. package/lib/utils/flightDateUtils.ts +20 -0
  65. package/lib/utils/flightUtils.ts +563 -0
  66. package/lib/utils/index.ts +1 -0
  67. package/package.json +4 -3
  68. package/dist/FlightItinerary-Dy-2zMYt.js +0 -378
  69. package/dist/FlightResult-B39NrUY_.js +0 -354
  70. /package/dist/assets/{FlightItinerary.css → _styles.css} +0 -0
@@ -0,0 +1,182 @@
1
+ import { jsxs as r, jsx as o, Fragment as A } from "react/jsx-runtime";
2
+ import { useFeatureFlags as w, CashValue as m, EToolTipPosition as C, EInvalidAmountDisplayOption as u, EAmountsDisplayFeature as F, ClientPointsValue as U } from "@odynn/awayz-core";
3
+ import { useQuery as H } from "@tanstack/react-query";
4
+ import "./moment-BGjjqtLQ.js";
5
+ import "./arrayExtensions-DFLvtO8l.js";
6
+ import Y, { useState as B } from "react";
7
+ import { b as _ } from "./index-BUY1nabz.js";
8
+ import { g as $, h as v, i as j, j as q } from "./index-B_j9TSQq.js";
9
+ import { EPaymentType as E } from "./enums/EPaymentType.js";
10
+ import { EBaggage as O } from "./hooks/useFlightSearch/useFlightSearch.types.js";
11
+ import { getAirlineProgram as z, formatCabinClass as x } from "./utils/flightUtils.js";
12
+ import './assets/BookingOption.css';const P = (e, l, n = l + "s") => e === 1 ? l : n, M = (e) => e ? e.toLowerCase().replace(/-/g, " ").split(" ").map((l) => l.charAt(0).toUpperCase() + l.slice(1)).join(" ") : "";
13
+ function W(e, l = !0) {
14
+ if ((!e || isNaN(e) || e < 0) && l) return "N/A";
15
+ let n = e == null ? void 0 : e.toString().split(".")[0];
16
+ return n == null ? void 0 : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
17
+ }
18
+ const Z = "USD", no = ({
19
+ type: e,
20
+ title: l,
21
+ cashValue: n,
22
+ milesValue: R,
23
+ cashFee: p,
24
+ setSelected: g,
25
+ conditions: s,
26
+ slices: c,
27
+ baggages: y,
28
+ program: N
29
+ }) => {
30
+ var S, D, T;
31
+ const { featureFlags: L } = w(), [d, I] = B(!1), t = s == null ? void 0 : s.refundBeforeDeparture, i = s == null ? void 0 : s.changeBeforeDeparture, f = (t != null && t.allowed ? 1 : 0) + (i != null && i.allowed ? 1 : 0) + (((D = (S = c == null ? void 0 : c[0]) == null ? void 0 : S.segments) == null ? void 0 : D.length) || 0), { data: h } = H({
32
+ queryKey: ["airlineProgram", N],
33
+ queryFn: () => z(N),
34
+ enabled: !!N
35
+ });
36
+ return /* @__PURE__ */ r(
37
+ "div",
38
+ {
39
+ className: "flight-booking-option",
40
+ onClick: (a) => a.stopPropagation(),
41
+ children: [
42
+ /* @__PURE__ */ r("div", { className: "rate-details", children: [
43
+ e === E.POINTS && /* @__PURE__ */ o("img", { src: h == null ? void 0 : h.programLogo }),
44
+ /* @__PURE__ */ o("p", { className: "fare-brand-name", children: M(l) })
45
+ ] }),
46
+ e === E.CASH && /* @__PURE__ */ r("div", { className: "fare-comparison-content", children: [
47
+ y == null ? void 0 : y.map((a, k) => /* @__PURE__ */ r(Y.Fragment, { children: [
48
+ a.type === O.CHECKED && /* @__PURE__ */ r("div", { className: "fare-option checked", children: [
49
+ /* @__PURE__ */ o("p", { children: "Checked bags:" }),
50
+ /* @__PURE__ */ o("p", { children: a.quantity })
51
+ ] }),
52
+ a.type === O.CARRY_ON && /* @__PURE__ */ r("div", { className: "fare-option", children: [
53
+ /* @__PURE__ */ o("p", { children: "Carry-on bags:" }),
54
+ /* @__PURE__ */ o("p", { children: a.quantity })
55
+ ] }),
56
+ a.type === null && /* @__PURE__ */ r("div", { className: "fare-option", children: [
57
+ /* @__PURE__ */ o($, {}),
58
+ /* @__PURE__ */ o("p", { children: "N/A" })
59
+ ] })
60
+ ] }, k)),
61
+ /* @__PURE__ */ r("div", { className: "fare-option refundable", children: [
62
+ "Refundable:",
63
+ " ",
64
+ t != null && t.allowed ? /* @__PURE__ */ o(v, { className: "yes" }) : /* @__PURE__ */ o(_, { className: "no" })
65
+ ] }),
66
+ /* @__PURE__ */ r("div", { className: "fare-option changeable", children: [
67
+ "Changeable:",
68
+ " ",
69
+ i != null && i.allowed ? /* @__PURE__ */ o(v, { className: "yes" }) : /* @__PURE__ */ o(_, { className: "no" })
70
+ ] }),
71
+ /* @__PURE__ */ r(
72
+ "div",
73
+ {
74
+ className: "fare-option show-more-toggle",
75
+ onClick: (a) => {
76
+ a.stopPropagation(), I(!d);
77
+ },
78
+ children: [
79
+ /* @__PURE__ */ o("p", { children: d ? `Hide ${P(f, "option")}` : `+${f} ${P(f, "option")}` }),
80
+ /* @__PURE__ */ o("p", { children: d ? /* @__PURE__ */ o(j, {}) : /* @__PURE__ */ o(q, {}) })
81
+ ]
82
+ }
83
+ ),
84
+ d && /* @__PURE__ */ r(A, { children: [
85
+ (t == null ? void 0 : t.allowed) && /* @__PURE__ */ r("div", { className: "fare-option", children: [
86
+ "Refundable Penalty:",
87
+ " ",
88
+ /* @__PURE__ */ o(
89
+ m,
90
+ {
91
+ amount: t.penaltyAmount || 0,
92
+ currency: t.penaltyCurrency || "",
93
+ zeroDisplayOption: u.DISPLAY_AS_ZERO_WITH_CURRENCY,
94
+ position: C.LEFT
95
+ }
96
+ )
97
+ ] }),
98
+ (i == null ? void 0 : i.allowed) && /* @__PURE__ */ r("div", { className: "fare-option", children: [
99
+ "Changeable Penalty:",
100
+ " ",
101
+ /* @__PURE__ */ o(
102
+ m,
103
+ {
104
+ amount: i.penaltyAmount || 0,
105
+ currency: i.penaltyCurrency || "",
106
+ zeroDisplayOption: u.DISPLAY_AS_ZERO_WITH_CURRENCY,
107
+ position: C.LEFT
108
+ }
109
+ )
110
+ ] }),
111
+ (T = c == null ? void 0 : c[0].segments) == null ? void 0 : T.map((a) => /* @__PURE__ */ r(
112
+ "div",
113
+ {
114
+ className: "fare-option checked",
115
+ children: [
116
+ /* @__PURE__ */ r("p", { children: [
117
+ a.origin.iataCode,
118
+ " - ",
119
+ a.destination.iataCode,
120
+ ":"
121
+ ] }),
122
+ /* @__PURE__ */ r("div", { children: [
123
+ /* @__PURE__ */ o("img", { src: a.operatingCarrier.logo }),
124
+ /* @__PURE__ */ o("p", { children: x(a.passengers[0].cabinClass) })
125
+ ] })
126
+ ]
127
+ },
128
+ `${a.origin.iataCode}-${a.destination.iataCode}`
129
+ ))
130
+ ] })
131
+ ] }),
132
+ /* @__PURE__ */ o(
133
+ "button",
134
+ {
135
+ onClick: (a) => {
136
+ a.stopPropagation(), g();
137
+ },
138
+ children: e === E.CASH && n ? /* @__PURE__ */ r("span", { children: [
139
+ /* @__PURE__ */ o(
140
+ m,
141
+ {
142
+ amount: n.amount,
143
+ currency: n.currency,
144
+ position: C.LEFT,
145
+ zeroDisplayOption: u.DISPLAY_AS_ZERO_WITH_CURRENCY,
146
+ decimalPlaces: 2
147
+ }
148
+ ),
149
+ L.amountsDisplayFeature === F.CASH_AND_CLIENT_POINTS && /* @__PURE__ */ r(A, { children: [
150
+ " / ",
151
+ /* @__PURE__ */ o(
152
+ U,
153
+ {
154
+ currency: n.currency,
155
+ cashAmount: n.amount
156
+ }
157
+ )
158
+ ] })
159
+ ] }) : /* @__PURE__ */ r(A, { children: [
160
+ `${W(R)} miles + `,
161
+ /* @__PURE__ */ o(
162
+ m,
163
+ {
164
+ amount: (p == null ? void 0 : p.amount) || 0,
165
+ currency: (p == null ? void 0 : p.currency) || Z,
166
+ position: C.LEFT,
167
+ customDisplay: "No fee",
168
+ zeroDisplayOption: u.CUSTOM
169
+ }
170
+ )
171
+ ] })
172
+ }
173
+ )
174
+ ]
175
+ }
176
+ );
177
+ };
178
+ export {
179
+ no as B,
180
+ W as c,
181
+ P as p
182
+ };
@@ -0,0 +1,15 @@
1
+ import { l as D } from "./arrayExtensions-DFLvtO8l.js";
2
+ const m = (Y) => {
3
+ var r;
4
+ if (!Y) return "";
5
+ try {
6
+ return (r = D.byIso(Y)) == null ? void 0 : r.country;
7
+ } catch (M) {
8
+ return console.error(M), "";
9
+ }
10
+ };
11
+ var t = /* @__PURE__ */ ((Y) => (Y.USStringDateFormat = "MMM DD, YYYY", Y.USStringDateTimeFormat = "MMM DD, YYYY, h:mm A (z)", Y.FlightShortDate = "MMM DD - h:mm A", Y.FlightTime = "h:mm A", Y.DateFormat = "MM/DD", Y.StringDateFormat = "MMM DD", Y.FullDateFormat = "MM/DD/YYYY", Y.ServerDate = "YYYY-MM-DD", Y.GoogleDateFormat = "YYYYMMDDTHHmmssZ", Y.AppleDateFormat = "YYYYMMDDTHHmmss", Y.USStringDateWithTimeFormat = "MMM DD, YYYY, h:mm A", Y))(t || {});
12
+ export {
13
+ t as E,
14
+ m as g
15
+ };
@@ -0,0 +1 @@
1
+ @import"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap";*{font-family:Inter,sans-serif!important;margin:0;padding:0;box-sizing:border-box}:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tip{position:relative}.tip>span{background-color:var(--dark, #14181f);color:#fff;padding:.5rem;border-radius:.5rem;position:absolute;bottom:110%;left:50%;transform:translate(-50%);display:none;transition:all .2s ease-in-out;z-index:100;width:max-content;font-size:.6rem;font-weight:600;text-transform:uppercase;line-height:.8rem;text-align:center;box-sizing:border-box;pointer-events:none}@media screen and (max-width: 480px){.tip>span{width:fit-content}}.tip>span.left{right:100%;top:50%;bottom:auto;left:auto;transform:translateY(-50%)}.tip>span.left:before{left:auto;right:-7.5px;top:50%;transform:translateY(-50%) rotate(-90deg)}.tip>span.right{left:100%;top:50%;bottom:auto;right:auto;transform:translateY(-50%)}.tip>span.right:before{left:-7.5px;right:auto;top:50%;transform:translateY(-50%) rotate(90deg)}.tip>span.bottom{top:100%;left:50%;right:auto;bottom:auto;transform:translate(-50%)}.tip>span.bottom:before{left:50%;right:auto;top:-5px;transform:translate(-50%) rotate(180deg)}.tip>span:before{content:"";position:absolute;bottom:-5px;left:50%;transform:translate(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--dark, #14181f)}.tip:hover>span,.tip:focus>span{display:flex;animation:tip-fade-up .2s ease-in-out}.tip:hover>span.right,.tip:focus>span.right{animation:tip-fade-right .2s ease-in-out}.tip:hover>span.left,.tip:focus>span.left{animation:tip-fade-left .2s ease-in-out}.tip:hover>span.bottom,.tip:focus>span.bottom{animation:tip-fade-down .2s ease-in-out}@keyframes slide-in-right{0%{opacity:0;transform:translate(0)}50%{transform:translate(-100vw);opacity:0}50.001%{opacity:0;transform:translate(105vw)}50.002%{opacity:1;transform:translate(100vw)}to{transform:translate(0)}}@keyframes slide-in-left{0%{opacity:0;transform:translate(0)}50%{transform:translate(100vw);opacity:0}50.001%{opacity:0;transform:translate(-100vw)}50.002%{opacity:1;transform:translate(-100vw)}to{transform:translate(0)}}@keyframes slide-out-right{0%{transform:translate(0)}to{transform:translate(100vw);opacity:1}}@keyframes slide-out-left{0%{transform:translate(0)}to{transform:translate(-100vw);opacity:1}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translate(0);opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-in{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes scale-out{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes scale-in{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes no-no{0%{transform:translate(0)}20%{transform:translate(-20px)}40%{transform:translate(15px)}60%{transform:translate(-10px)}80%{transform:translate(5px)}to{transform:translate(0)}}@keyframes loading-track{0%{transform:translate(-100%);opacity:0}25%{opacity:1}75%{opacity:1}to{opacity:0;transform:translate(100%)}}@keyframes loading-in{0%{height:0}to{height:5px}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shine{0%{background-position:right}}@keyframes text-pulse{0%{opacity:.75}35%{opacity:1}65%{opacity:1}to{opacity:.75}}@keyframes pulse{0%{opacity:.85}35%{opacity:1}65%{opacity:1}to{opacity:.85}}@keyframes shimmer{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-right{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes spring-in{0%{opacity:0;transform:scale(.8)}70%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes ripple{0%{transform:scale(1)}to{transform:scale(1.1,1.4)}}@keyframes tip-fade-right{0%{opacity:0;transform:translate(-20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-left{0%{opacity:0;transform:translate(20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-down{0%{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%)}}@keyframes tip-fade-up{0%{opacity:0;transform:translate(-50%,5px)}to{opacity:1;transform:translate(-50%)}}@keyframes slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-out{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}@keyframes scale-fade-in{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scroll-horizontally{0%{transform:translate(0)}to{transform:translate(-50%)}}.flight-booking-option{display:flex;flex-direction:column;border:1px solid var(--border, #e7eef3);border-radius:1rem;cursor:default;-webkit-user-select:none;user-select:none;transition:all .3s ease;padding:1rem;min-width:270px;gap:1rem;height:fit-content}.flight-booking-option .fare-option{display:flex;justify-content:space-between;border-bottom:1px solid var(--border, #e7eef3);padding:.5rem 0}.flight-booking-option .fare-option.show-more-toggle{cursor:pointer}.flight-booking-option .fare-option.show-more-toggle:hover{background-color:var(--background, #f9fdff)}.flight-booking-option .fare-option .yes{color:var(--primary, #1495f2)}.flight-booking-option .fare-option .no{color:var(--danger, #e53935)}.flight-booking-option .fare-option>div{display:flex;gap:.5rem}.flight-booking-option .fare-option>div img{height:20px}.flight-booking-option .rate-details>img{height:30px;max-width:70%}.flight-booking-option .rate-details .fare-brand-name{font-weight:600}.flight-booking-option button{border-radius:50rem;padding:.5rem 1rem;border:none;background-color:var(--primary, #1495f2);color:var(--foreground, #fff);font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center}
@@ -1 +1 @@
1
- @import"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap";*{font-family:Inter,sans-serif!important;margin:0;padding:0;box-sizing:border-box}:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tip{position:relative}.tip>span{background-color:var(--dark, #14181f);color:#fff;padding:.5rem;border-radius:.5rem;position:absolute;bottom:110%;left:50%;transform:translate(-50%);display:none;transition:all .2s ease-in-out;z-index:100;width:max-content;font-size:.6rem;font-weight:600;text-transform:uppercase;line-height:.8rem;text-align:center;box-sizing:border-box;pointer-events:none}@media screen and (max-width: 480px){.tip>span{width:fit-content}}.tip>span.left{right:100%;top:50%;bottom:auto;left:auto;transform:translateY(-50%)}.tip>span.left:before{left:auto;right:-7.5px;top:50%;transform:translateY(-50%) rotate(-90deg)}.tip>span.right{left:100%;top:50%;bottom:auto;right:auto;transform:translateY(-50%)}.tip>span.right:before{left:-7.5px;right:auto;top:50%;transform:translateY(-50%) rotate(90deg)}.tip>span.bottom{top:100%;left:50%;right:auto;bottom:auto;transform:translate(-50%)}.tip>span.bottom:before{left:50%;right:auto;top:-5px;transform:translate(-50%) rotate(180deg)}.tip>span:before{content:"";position:absolute;bottom:-5px;left:50%;transform:translate(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--dark, #14181f)}.tip:hover>span,.tip:focus>span{display:flex;animation:tip-fade-up .2s ease-in-out}.tip:hover>span.right,.tip:focus>span.right{animation:tip-fade-right .2s ease-in-out}.tip:hover>span.left,.tip:focus>span.left{animation:tip-fade-left .2s ease-in-out}.tip:hover>span.bottom,.tip:focus>span.bottom{animation:tip-fade-down .2s ease-in-out}@keyframes slide-in-right{0%{opacity:0;transform:translate(0)}50%{transform:translate(-100vw);opacity:0}50.001%{opacity:0;transform:translate(105vw)}50.002%{opacity:1;transform:translate(100vw)}to{transform:translate(0)}}@keyframes slide-in-left{0%{opacity:0;transform:translate(0)}50%{transform:translate(100vw);opacity:0}50.001%{opacity:0;transform:translate(-100vw)}50.002%{opacity:1;transform:translate(-100vw)}to{transform:translate(0)}}@keyframes slide-out-right{0%{transform:translate(0)}to{transform:translate(100vw);opacity:1}}@keyframes slide-out-left{0%{transform:translate(0)}to{transform:translate(-100vw);opacity:1}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translate(0);opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-in{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes scale-out{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes scale-in{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes no-no{0%{transform:translate(0)}20%{transform:translate(-20px)}40%{transform:translate(15px)}60%{transform:translate(-10px)}80%{transform:translate(5px)}to{transform:translate(0)}}@keyframes loading-track{0%{transform:translate(-100%);opacity:0}25%{opacity:1}75%{opacity:1}to{opacity:0;transform:translate(100%)}}@keyframes loading-in{0%{height:0}to{height:5px}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shine{0%{background-position:right}}@keyframes text-pulse{0%{opacity:.75}35%{opacity:1}65%{opacity:1}to{opacity:.75}}@keyframes pulse{0%{opacity:.85}35%{opacity:1}65%{opacity:1}to{opacity:.85}}@keyframes shimmer{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-right{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes spring-in{0%{opacity:0;transform:scale(.8)}70%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes ripple{0%{transform:scale(1)}to{transform:scale(1.1,1.4)}}@keyframes tip-fade-right{0%{opacity:0;transform:translate(-20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-left{0%{opacity:0;transform:translate(20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-down{0%{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%)}}@keyframes tip-fade-up{0%{opacity:0;transform:translate(-50%,5px)}to{opacity:1;transform:translate(-50%)}}@keyframes slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-out{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}@keyframes scale-fade-in{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scroll-horizontally{0%{transform:translate(0)}to{transform:translate(-50%)}}.awayz-flight-result{background-color:var(--foreground, #fff);border-radius:1rem;border:1px solid var(--border, #e7eef3);overflow:hidden;width:100%;margin:0 auto;position:relative;height:fit-content;padding:1px;transition:all .2s ease-in-out;z-index:10;animation:fade-up .2s ease-in-out both;backface-visibility:hidden}.awayz-flight-result .content{overflow:hidden;border-radius:.8rem;width:100%;margin:0 auto;position:relative;height:fit-content;z-index:1;display:flex;flex-direction:column}.awayz-flight-result .content>div{z-index:2}.awayz-flight-result .content>div.flight-info{flex:4;display:flex;flex-direction:column;min-height:60%;gap:.5rem;padding:1rem}.awayz-flight-result .content>div.flight-info .airlines{position:relative;width:50px;max-width:50px;height:30px}.awayz-flight-result .content>div.flight-info .airlines>div{position:absolute;display:flex;align-items:center;gap:.5rem;border:1px solid var(--border, #e7eef3);border-radius:50%;height:30px;width:30px;justify-content:center;background-color:var(--light, #f9fdff)}.awayz-flight-result .content>div.flight-info .airlines>div img{width:70%}.awayz-flight-result .content>div.flight-info .airlines>div:nth-child(2){top:10px;left:15px}.awayz-flight-result .content>div.flight-info .airlines>div:nth-child(3){top:-10px;left:20px}.awayz-flight-result .content>div.flight-info .airlines>div span{font-size:.7rem}.awayz-flight-result .content>div.flight-info .airlines p{font-weight:600}.awayz-flight-result .content>div.flight-info .flight-locations{align-items:center;gap:1rem;display:flex}.awayz-flight-result .content>div.flight-info .flight-locations .show-desktop{display:none}@media screen and (min-width: 768px){.awayz-flight-result .content>div.flight-info .flight-locations .show-desktop{display:flex}}.awayz-flight-result .content>div.flight-info .flight-locations .show-mobile{display:none}@media screen and (max-width: 768px){.awayz-flight-result .content>div.flight-info .flight-locations .show-mobile{display:flex}}.awayz-flight-result .content>div.flight-info .flight-locations:last-child div p:first-child{font-weight:600}.awayz-flight-result .content>div.flight-info .flight-locations>div{flex:1;font-size:.8rem}.awayz-flight-result .content>div.flight-info .flight-locations>div:first-child{text-align:left}.awayz-flight-result .content>div.flight-info .flight-locations>div:last-child{text-align:right}.awayz-flight-result .content>div.flight-info .flight-locations .flight-duration{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:1rem;font-weight:600;font-size:.7rem}.awayz-flight-result .content>div.flight-info .flight-locations .line{height:2px;flex:1;background:repeating-linear-gradient(90deg,var(--border, #e7eef3) 0 20px,rgba(0,0,0,0) 0 30px);z-index:1}.awayz-flight-result .content>div.flight-info .flight-locations>div{display:flex;flex-direction:column;text-align:center;flex:1;width:100%}.awayz-flight-result .content>div.flight-info .flight-locations>div.duration{flex-direction:row;align-items:center;justify-content:center;gap:.5rem}.awayz-flight-result .content>div.flight-info .flight-locations>div.duration p{opacity:.4}.awayz-flight-result .content>div.flight-info .flight-locations>div.flight-location{text-align:left;align-items:flex-start;max-width:fit-content}.awayz-flight-result .content>div.flight-info .flight-locations>div:last-child{text-align:right;align-items:flex-end;max-width:fit-content}.awayz-flight-result .content>div.flight-footer{flex:2;display:flex;justify-content:space-between;align-items:center;padding:1rem;gap:1rem;background-color:var(--background, #f9fdff);border-top:1px solid var(--border, #e7eef3)}@media screen and (max-width: 1024px){.awayz-flight-result .content>div.flight-footer{flex-direction:column}}.awayz-flight-result .content>div.flight-footer .view-details{display:flex;align-items:center;gap:1rem;cursor:pointer;-webkit-user-select:none;user-select:none}.awayz-flight-result .content>div.flight-footer .booking-options{display:flex;justify-content:flex-end;gap:1rem;font-size:.8rem;flex:3}@media screen and (max-width: 1024px){.awayz-flight-result .content>div.flight-footer .booking-options{width:100%;flex-direction:column}}.awayz-flight-result .content>div.flight-footer .booking-options .offer-expiry{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--border, #e7eef3);border-radius:50rem;padding:1rem;gap:1rem;transition:all .2s ease-in-out;background-color:var(--foreground, #fff);font-weight:600}.awayz-flight-result .content>div.flight-footer .booking-options .offer-expiry span{display:flex;align-items:center;justify-content:center;font-size:1rem;color:var(--warning, #ff7f2f)}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--border, #e7eef3);border-radius:4rem;padding:.5rem 1rem;gap:2rem;cursor:pointer;transition:all .2s ease-in-out;background-color:var(--foreground, #fff)}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value .amount-airline-logo{display:flex;align-items:center;background-color:var(--light, #f9fdff);border-radius:4rem;padding:.25rem .5rem;margin-left:-.5rem}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value img{height:30px;max-width:100px}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value>div{display:flex;flex-direction:column}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value label{font-size:.7rem;font-weight:600}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value span{display:flex;gap:.25rem}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value{position:relative}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value .currency-conversion{display:flex}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value .best-value-flag{display:flex;align-items:center;justify-content:center;flex-direction:row;gap:.25rem;position:absolute;right:-1px;padding:.25rem .5rem;top:-1rem;color:var(--foreground, #fff);border-radius:50rem;font-weight:600;background-color:var(--primary, #1495f2);border-bottom-right-radius:0;font-size:.7rem}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value .best-value-flag p{color:var(--foreground, #fff)}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value.show-best-value-flag{border-color:var(--primary, #1495f2);border-top-right-radius:0}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value p{display:flex;gap:.25rem}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value:first-of-type{grid-area:price}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value:last-of-type{grid-area:points}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value:hover{background-color:var(--background, #f9fdff)}@media screen and (max-width: 1024px){.awayz-flight-result .content>div.flight-footer .booking-options .amount-value{flex-direction:row;justify-content:space-between;align-items:center}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value{text-align:center}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value img{height:30px;max-width:80px}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value p:last-child{font-weight:600;font-size:1rem}}.awayz-flight-result .content .flight-detail-container{display:flex;gap:1rem;justify-content:space-between}@media screen and (max-width: 1024px){.awayz-flight-result .content .flight-detail-container{width:100%}}.awayz-flight-result .content .flight-detail:not(:first-of-type){border-left:1px solid var(--border, #e7eef3);padding:0 2rem}@media screen and (max-width: 1024px){.awayz-flight-result .content .flight-detail:not(:first-of-type){padding:0 .5rem}}.awayz-flight-result .content .flight-detail p{font-size:.8rem}.awayz-flight-result .content .flight-detail p:first-of-type{font-size:.7rem;color:var(--text-light, rgba(37, 46, 52, .2509803922))}.awayz-flight-result .content .flight-detail p:last-of-type{font-weight:600}.awayz-flight-result .content .flight-detail p.chevron-text{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.awayz-flight-result .flight-details{display:grid;grid-template-rows:0fr;transition:all .2s ease-in-out;background-color:var(--foreground, #fff);border-top:1px solid var(--border, #e7eef3);border-width:0}.awayz-flight-result .flight-details.is-open{grid-template-rows:1fr;padding:1rem;border-top:1px solid var(--border, #e7eef3)}.awayz-flight-result .flight-details.is-open .inner{padding:1rem 0;scale:1;opacity:1}.awayz-flight-result .flight-details .inner{overflow:hidden;transition:all .2s ease-in-out;scale:.9;opacity:0;transform-origin:top center}.awayz-flight-result:hover{cursor:pointer}
1
+ @import"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap";*{font-family:Inter,sans-serif!important;margin:0;padding:0;box-sizing:border-box}:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tip{position:relative}.tip>span{background-color:var(--dark, #14181f);color:#fff;padding:.5rem;border-radius:.5rem;position:absolute;bottom:110%;left:50%;transform:translate(-50%);display:none;transition:all .2s ease-in-out;z-index:100;width:max-content;font-size:.6rem;font-weight:600;text-transform:uppercase;line-height:.8rem;text-align:center;box-sizing:border-box;pointer-events:none}@media screen and (max-width: 480px){.tip>span{width:fit-content}}.tip>span.left{right:100%;top:50%;bottom:auto;left:auto;transform:translateY(-50%)}.tip>span.left:before{left:auto;right:-7.5px;top:50%;transform:translateY(-50%) rotate(-90deg)}.tip>span.right{left:100%;top:50%;bottom:auto;right:auto;transform:translateY(-50%)}.tip>span.right:before{left:-7.5px;right:auto;top:50%;transform:translateY(-50%) rotate(90deg)}.tip>span.bottom{top:100%;left:50%;right:auto;bottom:auto;transform:translate(-50%)}.tip>span.bottom:before{left:50%;right:auto;top:-5px;transform:translate(-50%) rotate(180deg)}.tip>span:before{content:"";position:absolute;bottom:-5px;left:50%;transform:translate(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--dark, #14181f)}.tip:hover>span,.tip:focus>span{display:flex;animation:tip-fade-up .2s ease-in-out}.tip:hover>span.right,.tip:focus>span.right{animation:tip-fade-right .2s ease-in-out}.tip:hover>span.left,.tip:focus>span.left{animation:tip-fade-left .2s ease-in-out}.tip:hover>span.bottom,.tip:focus>span.bottom{animation:tip-fade-down .2s ease-in-out}@keyframes slide-in-right{0%{opacity:0;transform:translate(0)}50%{transform:translate(-100vw);opacity:0}50.001%{opacity:0;transform:translate(105vw)}50.002%{opacity:1;transform:translate(100vw)}to{transform:translate(0)}}@keyframes slide-in-left{0%{opacity:0;transform:translate(0)}50%{transform:translate(100vw);opacity:0}50.001%{opacity:0;transform:translate(-100vw)}50.002%{opacity:1;transform:translate(-100vw)}to{transform:translate(0)}}@keyframes slide-out-right{0%{transform:translate(0)}to{transform:translate(100vw);opacity:1}}@keyframes slide-out-left{0%{transform:translate(0)}to{transform:translate(-100vw);opacity:1}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translate(0);opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-in{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes scale-out{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes scale-in{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes no-no{0%{transform:translate(0)}20%{transform:translate(-20px)}40%{transform:translate(15px)}60%{transform:translate(-10px)}80%{transform:translate(5px)}to{transform:translate(0)}}@keyframes loading-track{0%{transform:translate(-100%);opacity:0}25%{opacity:1}75%{opacity:1}to{opacity:0;transform:translate(100%)}}@keyframes loading-in{0%{height:0}to{height:5px}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shine{0%{background-position:right}}@keyframes text-pulse{0%{opacity:.75}35%{opacity:1}65%{opacity:1}to{opacity:.75}}@keyframes pulse{0%{opacity:.85}35%{opacity:1}65%{opacity:1}to{opacity:.85}}@keyframes shimmer{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-right{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes spring-in{0%{opacity:0;transform:scale(.8)}70%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes ripple{0%{transform:scale(1)}to{transform:scale(1.1,1.4)}}@keyframes tip-fade-right{0%{opacity:0;transform:translate(-20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-left{0%{opacity:0;transform:translate(20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-down{0%{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%)}}@keyframes tip-fade-up{0%{opacity:0;transform:translate(-50%,5px)}to{opacity:1;transform:translate(-50%)}}@keyframes slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-out{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}@keyframes scale-fade-in{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scroll-horizontally{0%{transform:translate(0)}to{transform:translate(-50%)}}.awayz-flight-result{background-color:var(--foreground, #fff);border-radius:1rem;border:1px solid var(--border, #e7eef3);overflow:hidden;width:100%;margin:0 auto;position:relative;height:fit-content;padding:1px;transition:all .2s ease-in-out;z-index:10;animation:fade-up .2s ease-in-out both;backface-visibility:hidden}.awayz-flight-result .content{overflow:hidden;border-radius:.8rem;width:100%;margin:0 auto;position:relative;height:fit-content;z-index:1;display:flex;flex-direction:column}.awayz-flight-result .content .flight-info{padding:1rem;display:flex;flex-direction:column}.awayz-flight-result .content .flight-info .flight-info-header{display:flex;justify-content:space-between;align-items:center}.awayz-flight-result .content .flight-info .flight-info-header .airline-logo{display:flex;align-items:center;justify-content:center;gap:.5rem}.awayz-flight-result .content .flight-info .flight-info-header .airline-logo img{height:30px;width:30px;padding:.25rem;object-fit:contain;border-radius:50%;border:1px solid var(--border, #e7eef3);background-color:var(--light, #f9fdff)}.awayz-flight-result .content .flight-info .flight-info-header .airline-logo p{font-size:.8rem;font-weight:600}.awayz-flight-result .content .flight-info .flight-info-header .airline-logo p:last-child{color:var(--text-light, rgba(37, 46, 52, .2509803922));font-weight:400;font-size:.7rem}.awayz-flight-result .content .flight-info .flight-info-header .flight-times{display:flex;flex-direction:column;align-items:flex-end;font-size:.8rem}.awayz-flight-result .content .flight-info .flight-info-header .flight-times .flight-duration{display:flex;align-items:center;gap:.5rem;color:var(--text-light, rgba(37, 46, 52, .2509803922))}.awayz-flight-result .content .flight-info .flight-info-header .flight-times p{color:var(--text-light, rgba(37, 46, 52, .2509803922))}.awayz-flight-result .content .flight-info .flight-info-content{display:flex;justify-content:space-between;align-items:center}.awayz-flight-result .content .flight-info .flight-info-content .flight-icon{font-size:1.6rem;color:var(--text-light, rgba(37, 46, 52, .2509803922))}.awayz-flight-result .content .flight-info .flight-info-content .flight-info-times .flight-info-time{font-size:1.6rem;font-weight:600}.awayz-flight-result .content .flight-info .flight-info-content .flight-info-times .flight-location{display:flex;gap:.5rem}.awayz-flight-result .content .flight-info .flight-info-content .flight-info-times .flight-location .flight-location-icon{display:flex;align-items:center;justify-content:center;height:20px;width:20px;border-radius:50%;border-radius:4rem;background-color:var(--primary, #1495f2);font-size:.7rem;color:var(--foreground, #fff)}.awayz-flight-result .content .flight-info .flight-info-content .flight-info-times:last-child{align-items:flex-end}.awayz-flight-result .content .flight-info .flight-info-content .flight-info-times:last-child .flight-location{justify-content:flex-end}.awayz-flight-result .content>div.flight-footer{flex:2;display:flex;justify-content:space-between;align-items:center;padding:1rem;gap:1rem;background-color:var(--background, #f9fdff);border-top:1px solid var(--border, #e7eef3)}@media screen and (max-width: 1024px){.awayz-flight-result .content>div.flight-footer{flex-direction:column}}.awayz-flight-result .content>div.flight-footer .view-details{display:flex;align-items:center;gap:1rem;cursor:pointer;-webkit-user-select:none;user-select:none}.awayz-flight-result .content>div.flight-footer .booking-options{display:flex;justify-content:flex-end;gap:1rem;font-size:.8rem;flex:3}@media screen and (max-width: 1024px){.awayz-flight-result .content>div.flight-footer .booking-options{width:100%;flex-direction:column}}.awayz-flight-result .content>div.flight-footer .booking-options .offer-expiry{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--border, #e7eef3);border-radius:50rem;padding:1rem;gap:1rem;transition:all .2s ease-in-out;background-color:var(--foreground, #fff);font-weight:600}.awayz-flight-result .content>div.flight-footer .booking-options .offer-expiry span{display:flex;align-items:center;justify-content:center;font-size:1rem;color:var(--warning, #ff7f2f)}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--border, #e7eef3);border-radius:4rem;padding:.5rem 1rem;gap:2rem;cursor:pointer;transition:all .2s ease-in-out;background-color:var(--foreground, #fff)}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value .amount-airline-logo{display:flex;align-items:center;background-color:var(--light, #f9fdff);border-radius:4rem;padding:.25rem .5rem;margin-left:-.5rem}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value img{height:30px;max-width:100px}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value>div{display:flex;flex-direction:column}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value label{font-size:.7rem;font-weight:600}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value .flight-cash-amount-value{display:flex;gap:.25rem}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value{position:relative}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value .currency-conversion{display:flex}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value .best-value-flag{display:flex;align-items:center;justify-content:center;flex-direction:row;gap:.25rem;position:absolute;right:-1px;padding:.25rem .5rem;top:-1rem;color:var(--foreground, #fff);border-radius:50rem;font-weight:600;background-color:var(--primary, #1495f2);border-bottom-right-radius:0;font-size:.7rem}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value .best-value-flag p{color:var(--foreground, #fff)}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value.show-best-value-flag{border-color:var(--primary, #1495f2);border-top-right-radius:0}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value p{display:flex;gap:.25rem}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value:first-of-type{grid-area:price}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value:last-of-type{grid-area:points}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value:hover{background-color:var(--background, #f9fdff)}@media screen and (max-width: 1024px){.awayz-flight-result .content>div.flight-footer .booking-options .amount-value{flex-direction:row;justify-content:space-between;align-items:center}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value{text-align:center}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value.amount-value img{height:30px;max-width:80px}.awayz-flight-result .content>div.flight-footer .booking-options .amount-value p:last-child{font-weight:600;font-size:1rem}}.awayz-flight-result .content .flight-detail-container{display:flex;gap:1rem;justify-content:space-between}@media screen and (max-width: 1024px){.awayz-flight-result .content .flight-detail-container{width:100%}}.awayz-flight-result .content .flight-detail:not(:first-of-type){border-left:1px solid var(--border, #e7eef3);padding:0 2rem}@media screen and (max-width: 1024px){.awayz-flight-result .content .flight-detail:not(:first-of-type){padding:0 .5rem}}.awayz-flight-result .content .flight-detail p{font-size:.8rem}.awayz-flight-result .content .flight-detail p:first-of-type{font-size:.7rem;color:var(--text-light, rgba(37, 46, 52, .2509803922))}.awayz-flight-result .content .flight-detail p:last-of-type{font-weight:600}.awayz-flight-result .content .flight-detail p.chevron-text{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.awayz-flight-result .flight-details{display:grid;grid-template-rows:0fr;transition:all .2s ease-in-out;background-color:var(--foreground, #fff);border-top:1px solid var(--border, #e7eef3);border-width:0}.awayz-flight-result .flight-details.is-open{grid-template-rows:1fr;padding:1rem;border-top:1px solid var(--border, #e7eef3)}.awayz-flight-result .flight-details.is-open .inner{padding:1rem 0;scale:1;opacity:1}.awayz-flight-result .flight-details .inner{overflow:hidden;transition:all .2s ease-in-out;scale:.9;opacity:0;transform-origin:top center}.awayz-flight-result .flight-details .inner .flight-booking-options{display:flex;flex-direction:column;gap:1rem}.awayz-flight-result .flight-details .inner .flight-booking-options .booking-options-section{display:flex;flex-direction:column;gap:.5rem}.awayz-flight-result .flight-details .inner .flight-booking-options .booking-options-title{font-size:.7rem;font-weight:600;color:var(--text-light, rgba(37, 46, 52, .2509803922));text-transform:uppercase;letter-spacing:.04em}.awayz-flight-result .flight-details .inner .flight-booking-options .booking-options-scroll{display:flex;gap:1rem;overflow-x:auto;padding-bottom:.25rem;-webkit-overflow-scrolling:touch}.awayz-flight-result .flight-details .inner .flight-booking-options .booking-options-scroll>*{flex:0 0 auto}.awayz-flight-result:hover{cursor:pointer}
@@ -0,0 +1 @@
1
+ @import"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap";*{font-family:Inter,sans-serif!important;margin:0;padding:0;box-sizing:border-box}:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tip{position:relative}.tip>span{background-color:var(--dark, #14181f);color:#fff;padding:.5rem;border-radius:.5rem;position:absolute;bottom:110%;left:50%;transform:translate(-50%);display:none;transition:all .2s ease-in-out;z-index:100;width:max-content;font-size:.6rem;font-weight:600;text-transform:uppercase;line-height:.8rem;text-align:center;box-sizing:border-box;pointer-events:none}@media screen and (max-width: 480px){.tip>span{width:fit-content}}.tip>span.left{right:100%;top:50%;bottom:auto;left:auto;transform:translateY(-50%)}.tip>span.left:before{left:auto;right:-7.5px;top:50%;transform:translateY(-50%) rotate(-90deg)}.tip>span.right{left:100%;top:50%;bottom:auto;right:auto;transform:translateY(-50%)}.tip>span.right:before{left:-7.5px;right:auto;top:50%;transform:translateY(-50%) rotate(90deg)}.tip>span.bottom{top:100%;left:50%;right:auto;bottom:auto;transform:translate(-50%)}.tip>span.bottom:before{left:50%;right:auto;top:-5px;transform:translate(-50%) rotate(180deg)}.tip>span:before{content:"";position:absolute;bottom:-5px;left:50%;transform:translate(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--dark, #14181f)}.tip:hover>span,.tip:focus>span{display:flex;animation:tip-fade-up .2s ease-in-out}.tip:hover>span.right,.tip:focus>span.right{animation:tip-fade-right .2s ease-in-out}.tip:hover>span.left,.tip:focus>span.left{animation:tip-fade-left .2s ease-in-out}.tip:hover>span.bottom,.tip:focus>span.bottom{animation:tip-fade-down .2s ease-in-out}@keyframes slide-in-right{0%{opacity:0;transform:translate(0)}50%{transform:translate(-100vw);opacity:0}50.001%{opacity:0;transform:translate(105vw)}50.002%{opacity:1;transform:translate(100vw)}to{transform:translate(0)}}@keyframes slide-in-left{0%{opacity:0;transform:translate(0)}50%{transform:translate(100vw);opacity:0}50.001%{opacity:0;transform:translate(-100vw)}50.002%{opacity:1;transform:translate(-100vw)}to{transform:translate(0)}}@keyframes slide-out-right{0%{transform:translate(0)}to{transform:translate(100vw);opacity:1}}@keyframes slide-out-left{0%{transform:translate(0)}to{transform:translate(-100vw);opacity:1}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translate(0);opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-in{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes scale-out{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes scale-in{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes no-no{0%{transform:translate(0)}20%{transform:translate(-20px)}40%{transform:translate(15px)}60%{transform:translate(-10px)}80%{transform:translate(5px)}to{transform:translate(0)}}@keyframes loading-track{0%{transform:translate(-100%);opacity:0}25%{opacity:1}75%{opacity:1}to{opacity:0;transform:translate(100%)}}@keyframes loading-in{0%{height:0}to{height:5px}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shine{0%{background-position:right}}@keyframes text-pulse{0%{opacity:.75}35%{opacity:1}65%{opacity:1}to{opacity:.75}}@keyframes pulse{0%{opacity:.85}35%{opacity:1}65%{opacity:1}to{opacity:.85}}@keyframes shimmer{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-right{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes spring-in{0%{opacity:0;transform:scale(.8)}70%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes ripple{0%{transform:scale(1)}to{transform:scale(1.1,1.4)}}@keyframes tip-fade-right{0%{opacity:0;transform:translate(-20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-left{0%{opacity:0;transform:translate(20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-down{0%{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%)}}@keyframes tip-fade-up{0%{opacity:0;transform:translate(-50%,5px)}to{opacity:1;transform:translate(-50%)}}@keyframes slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-out{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}@keyframes scale-fade-in{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scroll-horizontally{0%{transform:translate(0)}to{transform:translate(-50%)}}.horizontal-scroller-container{position:relative}.horizontal-scroller-container:before{content:"";position:absolute;left:0;top:0;bottom:0;width:100px;background:linear-gradient(to right,var(--foreground, #fff) 20%,transparent);pointer-events:none;z-index:1;opacity:0;transition:opacity .3s ease}.horizontal-scroller-container:after{content:"";position:absolute;right:0;top:0;bottom:0;width:100px;background:linear-gradient(to left,var(--foreground, #fff) 20%,transparent);pointer-events:none;z-index:1;opacity:0;transition:opacity .3s ease}.horizontal-scroller-container.show-left-fade:before{opacity:1}.horizontal-scroller-container.show-right-fade:after{opacity:1}.horizontal-scroller-container .horizontal-scroller{display:flex;overflow-x:auto;scroll-behavior:smooth;gap:1rem}.horizontal-scroller-container .scroll-arrow{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;background-color:var(--foreground, #fff);border:1px solid var(--border, #e7eef3);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;z-index:2}.horizontal-scroller-container .scroll-arrow:hover{background-color:var(--background, #f9fdff)}.horizontal-scroller-container .scroll-arrow:active{transform:translateY(-50%) scale(.95)}.horizontal-scroller-container .scroll-arrow-left{left:0}.horizontal-scroller-container .scroll-arrow-right{right:0}
@@ -0,0 +1,15 @@
1
+ import "react/jsx-runtime";
2
+ import "@odynn/awayz-core";
3
+ import "@tanstack/react-query";
4
+ import { B as x } from "../../BookingOption-CkvQdhKK.js";
5
+ import "../../moment-BGjjqtLQ.js";
6
+ import "../../arrayExtensions-DFLvtO8l.js";
7
+ import "react";
8
+ import "../../index-BUY1nabz.js";
9
+ import "../../index-B_j9TSQq.js";
10
+ import "../../enums/EPaymentType.js";
11
+ import "../../hooks/useFlightSearch/useFlightSearch.types.js";
12
+ import "../../utils/flightUtils.js";
13
+ export {
14
+ x as default
15
+ };
@@ -1,10 +1,251 @@
1
- import "react/jsx-runtime";
2
- import "../../index-7zRjF0bU.js";
3
- import { b as f } from "../../FlightItinerary-Dy-2zMYt.js";
1
+ import { jsxs as t, jsx as a, Fragment as $ } from "react/jsx-runtime";
2
+ import { c as j, a as k, b as x, D as K } from "../../index-7zRjF0bU.js";
3
+ import { g as L, E as M } from "../../DateFormats-Db0j7Cpe.js";
4
4
  import "../../arrayExtensions-DFLvtO8l.js";
5
- import "react";
6
- import "../../moment-BGjjqtLQ.js";
7
- import "react-i18next";
5
+ import q, { useMemo as w } from "react";
6
+ import { h as S } from "../../moment-BGjjqtLQ.js";
7
+ import { useTranslation as B } from "react-i18next";
8
+ import { F as H, a as G } from "../../index-BUY1nabz.js";
9
+ import '../../assets/_styles.css';/* empty css */
10
+ import { E as _ } from "../../keys-Chup9jep.js";
11
+ const ir = ({
12
+ itinerary: e,
13
+ origin: p,
14
+ destination: g,
15
+ onDisableRenderItinerary: s,
16
+ isMultiDayFlight: n
17
+ }) => {
18
+ var o, l, F, b, E, f;
19
+ const u = () => {
20
+ var m, d;
21
+ const r = (d = (m = e[0]) == null ? void 0 : m.passengers) == null ? void 0 : d[0];
22
+ return (r == null ? void 0 : r.cabinClassMarketingName) ?? (r == null ? void 0 : r.cabinClass);
23
+ }, h = w(() => {
24
+ var m, d, v, T, C, N, A, Z, O, Y, z;
25
+ const r = [];
26
+ for (let D = 0; D < e.length; D++) {
27
+ const c = e[D], i = e[D + 1];
28
+ if (!i)
29
+ break;
30
+ const I = {
31
+ arrival: {
32
+ airport: (m = c.destination) == null ? void 0 : m.name,
33
+ city: ((d = c.destination) == null ? void 0 : d.cityName) ?? ((T = (v = c.destination) == null ? void 0 : v.city) == null ? void 0 : T.name),
34
+ country: L((C = c.destination) == null ? void 0 : C.iataCountryCode),
35
+ time: c.arrivingAt,
36
+ arrivalTimeZone: c.destination.timeZone
37
+ },
38
+ departure: {
39
+ airport: (N = i.origin) == null ? void 0 : N.name,
40
+ city: ((A = i.origin) == null ? void 0 : A.cityName) ?? ((O = (Z = i.origin) == null ? void 0 : Z.city) == null ? void 0 : O.name),
41
+ country: L((Y = c.destination) == null ? void 0 : Y.iataCountryCode),
42
+ time: i.departingAt,
43
+ airline: i.operatingCarrier.name,
44
+ airlineCode: i.operatingCarrier.iataCode,
45
+ aircraft: (z = i.aircraft) == null ? void 0 : z.name,
46
+ flightNumber: i.operatingCarrierFlightNumber,
47
+ cabin: i.passengers[0].cabinClassMarketingName ?? i.passengers[0].cabinClass ?? u(),
48
+ departureTimeZone: i.origin.timeZone
49
+ },
50
+ layoverTime: j({
51
+ // we need to swap around the departure and arrival times
52
+ departureAt: c.arrivingAt,
53
+ departureTimeZone: c.destination.timeZone,
54
+ arrivalAt: i.departingAt,
55
+ arrivalTimeZone: i.origin.timeZone
56
+ })
57
+ };
58
+ I.layoverTime <= 0 && (s == null || s()), r.push(I);
59
+ }
60
+ return r;
61
+ }, [e]);
62
+ return /* @__PURE__ */ t("div", { className: "flight-itinerary", children: [
63
+ /* @__PURE__ */ a(
64
+ P,
65
+ {
66
+ airport: e[0].origin.name,
67
+ city: p.city,
68
+ country: L(p.country),
69
+ departureAt: e[0].departingAt,
70
+ departureTimeZone: e[0].origin.timeZone,
71
+ arrivalAt: e[0].arrivingAt,
72
+ arrivalTimeZone: e[0].destination.timeZone,
73
+ airline: e[0].operatingCarrier.name,
74
+ airlineCode: e[0].operatingCarrier.iataCode,
75
+ aircraft: (o = e[0].aircraft) == null ? void 0 : o.name,
76
+ flightNumber: e[0].operatingCarrierFlightNumber,
77
+ isMultiDayFlight: n
78
+ }
79
+ ),
80
+ h.map((r, m) => {
81
+ var d, v, T, C, N, A, Z;
82
+ return /* @__PURE__ */ t(q.Fragment, { children: [
83
+ /* @__PURE__ */ a(
84
+ U,
85
+ {
86
+ airport: r.arrival.airport,
87
+ city: r.arrival.city,
88
+ country: r.arrival.country,
89
+ time: r.arrival.time,
90
+ isLayover: !0,
91
+ layoverTime: x(r.layoverTime),
92
+ arrivalTimeZone: k(
93
+ r.arrival.arrivalTimeZone,
94
+ r.arrival.time
95
+ )
96
+ }
97
+ ),
98
+ /* @__PURE__ */ a(
99
+ P,
100
+ {
101
+ airport: (d = r.departure) == null ? void 0 : d.airport,
102
+ city: (v = r.departure) == null ? void 0 : v.city,
103
+ country: (T = r.departure) == null ? void 0 : T.country,
104
+ departureAt: r.departure.time,
105
+ departureTimeZone: r.departure.departureTimeZone,
106
+ arrivalAt: e[m + 1].arrivingAt,
107
+ arrivalTimeZone: e[m + 1].destination.timeZone,
108
+ airline: (C = r.departure) == null ? void 0 : C.airline,
109
+ airlineCode: (N = r.departure) == null ? void 0 : N.airlineCode,
110
+ aircraft: (A = r.departure) == null ? void 0 : A.aircraft,
111
+ flightNumber: (Z = r.departure) == null ? void 0 : Z.flightNumber
112
+ }
113
+ )
114
+ ] }, r.departure.flightNumber || m);
115
+ }),
116
+ /* @__PURE__ */ a(
117
+ U,
118
+ {
119
+ airport: (F = (l = e.getLast()) == null ? void 0 : l.destination) == null ? void 0 : F.name,
120
+ city: g.city,
121
+ country: L(g.country),
122
+ time: (b = e.getLast()) == null ? void 0 : b.arrivingAt,
123
+ arrivalTimeZone: k(
124
+ (E = e.getLast()) == null ? void 0 : E.destination.timeZone,
125
+ (f = e.getLast()) == null ? void 0 : f.arrivingAt
126
+ ),
127
+ isMultiDayFlight: n
128
+ }
129
+ )
130
+ ] });
131
+ }, P = ({
132
+ airport: e,
133
+ city: p,
134
+ country: g,
135
+ airline: s,
136
+ airlineCode: n,
137
+ flightNumber: u,
138
+ aircraft: h,
139
+ departureAt: o,
140
+ departureTimeZone: l,
141
+ arrivalAt: F,
142
+ arrivalTimeZone: b,
143
+ isMultiDayFlight: E
144
+ }) => {
145
+ const { t: f } = B(), r = j({
146
+ departureAt: o,
147
+ departureTimeZone: l,
148
+ arrivalAt: F,
149
+ arrivalTimeZone: b
150
+ });
151
+ return /* @__PURE__ */ t("div", { className: "departure", children: [
152
+ /* @__PURE__ */ t("p", { children: [
153
+ S(o).format(
154
+ f(_.TIME_ONLY, M.FlightTime)
155
+ ),
156
+ " ",
157
+ /* @__PURE__ */ t("span", { className: "time-zone", children: [
158
+ "(",
159
+ k(l, o),
160
+ ")"
161
+ ] }),
162
+ /* @__PURE__ */ a("br", {}),
163
+ E ? /* @__PURE__ */ t("div", { className: "travel-time", children: [
164
+ /* @__PURE__ */ a(H, {}),
165
+ /* @__PURE__ */ t("span", { children: [
166
+ "Departure:",
167
+ " ",
168
+ S(o).format(
169
+ f(_.DISPLAY_MEDIUM, M.StringDateFormat)
170
+ )
171
+ ] })
172
+ ] }) : /* @__PURE__ */ a($, {}),
173
+ /* @__PURE__ */ t("div", { className: "travel-time", children: [
174
+ /* @__PURE__ */ a(G, {}),
175
+ /* @__PURE__ */ t("span", { children: [
176
+ "Travel Time: ",
177
+ x(r)
178
+ ] })
179
+ ] })
180
+ ] }),
181
+ /* @__PURE__ */ t("div", { children: [
182
+ /* @__PURE__ */ t("span", { children: [
183
+ e,
184
+ ", ",
185
+ p,
186
+ ", ",
187
+ g
188
+ ] }),
189
+ /* @__PURE__ */ a("img", { src: `${K}${n}.svg`, alt: s }),
190
+ /* @__PURE__ */ t("p", { children: [
191
+ /* @__PURE__ */ a("strong", { children: "Aircraft:" }),
192
+ " ",
193
+ h
194
+ ] }),
195
+ /* @__PURE__ */ t("p", { children: [
196
+ /* @__PURE__ */ a("strong", { children: "Flight:" }),
197
+ " ",
198
+ n,
199
+ " ",
200
+ u
201
+ ] })
202
+ ] })
203
+ ] });
204
+ }, U = ({
205
+ airport: e,
206
+ city: p,
207
+ country: g,
208
+ time: s,
209
+ isLayover: n,
210
+ layoverTime: u,
211
+ arrivalTimeZone: h,
212
+ isMultiDayFlight: o
213
+ }) => {
214
+ const { t: l } = B("dates");
215
+ return /* @__PURE__ */ t("div", { className: `arrival ${n ? "layover" : ""}`, children: [
216
+ /* @__PURE__ */ t("p", { children: [
217
+ S(s).format(l(_.TIME_ONLY, M.FlightTime)),
218
+ " ",
219
+ /* @__PURE__ */ t("span", { className: "time-zone", children: [
220
+ "(",
221
+ h,
222
+ ")"
223
+ ] }),
224
+ o && !n ? /* @__PURE__ */ t("div", { className: "travel-time", children: [
225
+ /* @__PURE__ */ a(H, {}),
226
+ /* @__PURE__ */ t("span", { children: [
227
+ "Arrival:",
228
+ " ",
229
+ S(s).format(
230
+ l(_.DISPLAY_MEDIUM, M.StringDateFormat)
231
+ )
232
+ ] })
233
+ ] }) : /* @__PURE__ */ a($, {})
234
+ ] }),
235
+ /* @__PURE__ */ t("div", { children: [
236
+ /* @__PURE__ */ t("p", { children: [
237
+ n ? "Layover in" : "",
238
+ " ",
239
+ e,
240
+ ", ",
241
+ p,
242
+ ", ",
243
+ g
244
+ ] }),
245
+ /* @__PURE__ */ a("i", { children: n ? u : "" })
246
+ ] })
247
+ ] });
248
+ };
8
249
  export {
9
- f as default
250
+ ir as default
10
251
  };