@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
@@ -0,0 +1,541 @@
1
+ @use '../components/mixins' as mixins;
2
+
3
+ * {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ .flyin {
8
+ position: fixed;
9
+ inset: 0;
10
+ background: rgba(0, 0, 0, 0);
11
+ display: flex;
12
+ justify-content: flex-end;
13
+ z-index: 100001;
14
+ pointer-events: none;
15
+ transition: background 0.2s ease;
16
+
17
+ &--active {
18
+ background: rgba(0, 0, 0, 0.6);
19
+ pointer-events: auto;
20
+ }
21
+
22
+ &__panel {
23
+ background: var(--tide-booking-gray-xlight);
24
+ height: 100%;
25
+ width: 100%;
26
+ max-width: 100%;
27
+ transform: translateX(100%);
28
+ opacity: 0;
29
+ transition: transform 0.4s ease, opacity 0.4s ease;
30
+ box-shadow: none;
31
+ border-radius: 0;
32
+ position: relative;
33
+ display: flex;
34
+ flex-direction: column;
35
+ overflow-y: auto;
36
+ overflow-x: hidden;
37
+ @extend %scrollbar-thin;
38
+
39
+ @include mixins.media-sm {
40
+ width: 80%;
41
+ box-shadow: -4px 0 16px rgba(0, 0, 0, 0.15);
42
+ }
43
+
44
+ @include mixins.media-lg {
45
+ width: 50%;
46
+ }
47
+
48
+ &--active {
49
+ transform: translateX(0%);
50
+ opacity: 1;
51
+ }
52
+ }
53
+
54
+ &__close {
55
+ font-size: 14px;
56
+ cursor: pointer;
57
+ color: var(--tide-booking-color-primary);
58
+ text-decoration: underline;
59
+ }
60
+
61
+ &__content {
62
+ // background: var(--tide-booking-gray-background-light);
63
+ position: relative;
64
+ padding: 15px;
65
+ padding-bottom: 0px;
66
+
67
+ @include mixins.media-sm {
68
+ padding: 30px;
69
+ padding-bottom: 0px;
70
+ }
71
+
72
+ &-title {
73
+ margin: 0px;
74
+ font-weight: 700;
75
+
76
+ &-row {
77
+ display: flex;
78
+ justify-content: space-between;
79
+ align-items: center;
80
+ padding-bottom: 15px;
81
+ }
82
+ }
83
+
84
+ &-arrow {
85
+ height: 30px;
86
+ width: 30px;
87
+ background: var(--tide-booking-white);
88
+ border-radius: 50%;
89
+ cursor: pointer;
90
+ display: flex;
91
+ justify-content: center;
92
+ align-items: center;
93
+ box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.1);
94
+ transition: all 0.3s ease;
95
+
96
+ &.is-disabled {
97
+ opacity: 0.4;
98
+ pointer-events: none;
99
+ cursor: not-allowed;
100
+ }
101
+
102
+ &:hover {
103
+ background: var(--tide-booking-color-primary);
104
+
105
+ .flyin__content-arrow-icon {
106
+ color: var(--tide-booking-white);
107
+
108
+ &-- {
109
+ &forward {
110
+ transform: rotate(180deg);
111
+ }
112
+ }
113
+ }
114
+ }
115
+
116
+ &-row {
117
+ display: flex;
118
+ gap: 15px;
119
+ width: auto;
120
+ justify-content: end;
121
+ align-items: center;
122
+ flex: 0 0 auto;
123
+ margin-bottom: 10px;
124
+
125
+ @include mixins.media-sm {
126
+ justify-content: start;
127
+ margin-bottom: 0;
128
+ }
129
+ }
130
+
131
+ &-icon {
132
+ fill: var(--tide-booking-color-primary-light);
133
+ transition: all 0.3s ease;
134
+
135
+ &--forward {
136
+ transform: rotate(180deg);
137
+ }
138
+ }
139
+ }
140
+
141
+ &-text {
142
+ font-size: 12px;
143
+ color: var(--tide-booking-gray-dark);
144
+
145
+ &-icon {
146
+ position: absolute;
147
+ top: 0;
148
+ left: -20px;
149
+ transform: translateY(50%);
150
+
151
+ &-row {
152
+ display: flex;
153
+ width: 100%;
154
+ flex-direction: column;
155
+ align-items: flex-start;
156
+ flex: 0 0 auto;
157
+ // order: 2;
158
+ margin-bottom: 10px;
159
+
160
+ @include mixins.media-sm {
161
+ width: auto;
162
+ gap: 15px;
163
+ flex-direction: row;
164
+ align-items: center;
165
+ margin-bottom: 0;
166
+ }
167
+
168
+ img {
169
+ width: auto;
170
+ height: 80px;
171
+ }
172
+
173
+ span {
174
+ font-size: var(--tide-booking-black);
175
+ color: var(--tide-booking-gray-dark);
176
+ }
177
+ }
178
+ }
179
+
180
+ &-title {
181
+ font-size: 18px;
182
+ font-weight: 700;
183
+
184
+ &-row {
185
+ position: relative;
186
+
187
+ strong {
188
+ font-weight: 600;
189
+ }
190
+ }
191
+ }
192
+
193
+ &-row {
194
+ display: flex;
195
+ justify-content: flex-end;
196
+ align-items: center;
197
+ // margin-bottom: 15px;
198
+ flex-wrap: wrap;
199
+ margin-right: 0;
200
+ padding-top: 15px;
201
+ border-top: 1.5px solid var(--tide-booking-gray-background-light);
202
+
203
+ @include mixins.media-sm {
204
+ row-gap: 10px;
205
+ column-gap: 50px;
206
+ justify-content: space-between;
207
+ }
208
+ }
209
+
210
+ &-col {
211
+ display: flex;
212
+ flex-direction: column;
213
+ gap: 0.75rem;
214
+ flex: 0 0 auto;
215
+ width: 100%;
216
+ order: 1;
217
+ margin-bottom: 10px;
218
+ margin-top: 5px;
219
+
220
+ @include mixins.media-sm {
221
+ width: auto;
222
+ order: 0;
223
+ margin-bottom: 0px;
224
+ margin-top: 0px;
225
+ }
226
+ }
227
+ }
228
+
229
+ &-cards {
230
+ display: flex;
231
+ gap: 15px;
232
+ // overflow-x: auto;
233
+ // scroll-behavior: smooth;
234
+ width: max-content;
235
+ padding: 15px;
236
+ // -ms-overflow-style: none;
237
+ // scrollbar-width: none;
238
+
239
+ @include mixins.media-sm {
240
+ gap: 30px;
241
+ padding: 15px 30px;
242
+ }
243
+
244
+ &-wrapper {
245
+ position: relative;
246
+ // scrollbar-width: none;
247
+ // -ms-overflow-style: none;
248
+ overflow-x: scroll;
249
+ overflow-y: visible;
250
+ min-height: min-content;
251
+
252
+ // &::-webkit-scrollbar {
253
+ // display: none;
254
+ // }
255
+ }
256
+
257
+ /* Hide scrollbar */
258
+ // &::-webkit-scrollbar {
259
+ // display: none;
260
+ // }
261
+ }
262
+
263
+ &-card {
264
+ // height: 522px;
265
+ width: 100%;
266
+ max-width: 100%;
267
+ min-width: 314px;
268
+
269
+ border-radius: 16px;
270
+ box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.1);
271
+ display: flex;
272
+ flex-direction: column;
273
+ justify-content: space-between;
274
+ overflow: hidden;
275
+ background: var(--tide-booking-white);
276
+ transition: all 0.4s ease;
277
+ cursor: pointer;
278
+
279
+ @include mixins.media-sm {
280
+ width: 345px;
281
+ }
282
+
283
+ &:hover {
284
+ .flyin__content-card-top {
285
+ background: var(--tide-booking-color-primary-fade);
286
+ }
287
+
288
+ .flyin__content-card-button {
289
+ // background: var(--tide-booking-color-primary);
290
+ color: var(--tide-booking-white);
291
+
292
+ .cta--select {
293
+ background: var(--tide-booking-cta-background-select-hover);
294
+ }
295
+ }
296
+ }
297
+
298
+ &--selected {
299
+ .flyin__content-card-top {
300
+ background: var(--tide-booking-color-primary-gradient);
301
+ border-bottom: none;
302
+ }
303
+
304
+ .flyin__content-card-top-price {
305
+ color: var(--tide-booking-white);
306
+ }
307
+
308
+ .flyin__content-card-top-tag {
309
+ color: var(--tide-booking-white);
310
+ }
311
+
312
+ .flyin__content-card-middle {
313
+ // border-left: 4px solid var(--tide-booking-color-primary);
314
+ // border-right: 4px solid var(--tide-booking-color-primary);
315
+ }
316
+ &:hover {
317
+ .flyin__content {
318
+ cursor: default;
319
+ }
320
+ .flyin__content-card-top {
321
+ background: var(--tide-booking-color-primary);
322
+ }
323
+ }
324
+ }
325
+
326
+ &-top {
327
+ min-height: 60px;
328
+ width: 100%;
329
+ background: var(--tide-booking-color-primary);
330
+ display: flex;
331
+ justify-content: space-between;
332
+ align-items: end;
333
+ padding: 0 15px 12px 15px;
334
+ background: var(--tide-booking-white);
335
+ transition: all 0.4s ease;
336
+
337
+ &-price {
338
+ font-size: 18px;
339
+ font-weight: 700;
340
+ color: var(--tide-booking-black);
341
+
342
+ /* color: variables.$white; */
343
+ }
344
+
345
+ &-tag {
346
+ font-size: 24px;
347
+ color: var(--tide-booking-black);
348
+ /* color: variables.$white; */
349
+ font-weight: 700;
350
+ }
351
+ }
352
+
353
+ &-middle {
354
+ height: 430px;
355
+ background: var(--tide-booking-white);
356
+ transition: all 0.4s ease;
357
+
358
+ &-rows {
359
+ display: flex;
360
+ flex-direction: column;
361
+ gap: 10px;
362
+ padding: 15px 15px 0 15px;
363
+ max-height: 430px;
364
+ }
365
+
366
+ &-row {
367
+ display: flex;
368
+ justify-content: space-between;
369
+ align-items: center;
370
+ padding-bottom: 5px;
371
+ border-bottom: 1px dashed var(--tide-booking-color-primary-light);
372
+
373
+ &-left {
374
+ font-weight: 500;
375
+ color: var(--tide-booking-black);
376
+ }
377
+ &-right {
378
+ font-weight: 300;
379
+ }
380
+ }
381
+ }
382
+
383
+ &-bottom {
384
+ height: 30px;
385
+ background: var(--tide-booking-color-primary);
386
+ display: flex;
387
+ justify-content: center;
388
+ align-items: center;
389
+ color: var(--tide-booking-white);
390
+ font-size: 14px;
391
+ transition: all 0.4s ease;
392
+ }
393
+
394
+ &-button {
395
+ // border: 1.25px solid var(--tide-booking-color-primary);
396
+ border-radius: 3px;
397
+ display: flex;
398
+ justify-content: center;
399
+ align-items: center;
400
+ color: var(--tide-booking-color-primary);
401
+ padding: 15px;
402
+ cursor: pointer;
403
+ font-size: 14px;
404
+ transition: all 0.2s ease;
405
+ }
406
+ }
407
+
408
+ &-data {
409
+ display: flex;
410
+ flex-direction: column;
411
+ gap: 10px;
412
+ height: 300px;
413
+ overflow-y: auto;
414
+ @extend %scrollbar-thin;
415
+
416
+ &__title {
417
+ font-size: 18px;
418
+ color: var(--tide-booking-gray-dark);
419
+ }
420
+
421
+ &__item {
422
+ display: grid;
423
+ grid-template-columns: auto 1fr auto;
424
+ grid-template-rows: auto;
425
+ gap: 10px;
426
+ align-items: flex-start;
427
+
428
+ &-icon {
429
+ // margin-top: 3px;
430
+ color: var(--tide-booking-black);
431
+
432
+ // &--other {
433
+ // margin-top: 0;
434
+ // }
435
+ }
436
+
437
+ &-content {
438
+ display: flex;
439
+ flex-direction: column;
440
+ gap: 3px;
441
+
442
+ &-title {
443
+ font-size: 16px;
444
+ font-weight: 500;
445
+ margin-top: 0.125rem;
446
+ color: var(--tide-booking-black);
447
+ }
448
+
449
+ &-description {
450
+ font-size: 16px;
451
+ font-weight: 300;
452
+ color: var(--tide-booking-gray-dark);
453
+
454
+ @include mixins.media-sm {
455
+ overflow-wrap: break-word;
456
+ // inline-size: 60vw;
457
+ }
458
+
459
+ &--last {
460
+ margin-top: 5px;
461
+ }
462
+
463
+ &--list {
464
+ list-style-type: disc;
465
+ padding-left: 10px;
466
+ margin-top: 5px;
467
+
468
+ li {
469
+ margin-bottom: 5px;
470
+ }
471
+ }
472
+ }
473
+ }
474
+
475
+ &-price {
476
+ font-size: 16px;
477
+ color: var(--tide-booking-gray-dark);
478
+ white-space: nowrap;
479
+ margin-left: 15px;
480
+ margin-top: 5px;
481
+ }
482
+ }
483
+ }
484
+ }
485
+
486
+ &__button {
487
+ height: 30px;
488
+ width: 100%;
489
+ border: 1.25px solid var(--tide-booking-color-primary);
490
+ border-radius: 3px;
491
+ display: flex;
492
+ justify-content: center;
493
+ align-items: center;
494
+ background: var(--tide-booking-color-primary);
495
+ color: var(--tide-booking-white);
496
+ margin: 1rem;
497
+ cursor: pointer;
498
+ font-size: 14px;
499
+ transition: all 0.2s ease;
500
+
501
+ @include mixins.media-sm {
502
+ width: 216px;
503
+ }
504
+
505
+ &-wrapper {
506
+ display: flex;
507
+ justify-content: flex-end;
508
+ padding: 15px;
509
+
510
+ @include mixins.media-sm {
511
+ padding: 30px;
512
+ }
513
+
514
+ .cta {
515
+ width: auto;
516
+ min-width: 150px;
517
+ }
518
+
519
+ &--white {
520
+ @include mixins.media-sm {
521
+ }
522
+ }
523
+ }
524
+
525
+ &:hover {
526
+ background: var(--tide-booking-color-primary);
527
+ border: var(--tide-booking-color-primary);
528
+ }
529
+
530
+ &--white {
531
+ background: var(--tide-booking-white);
532
+ color: var(--tide-booking-color-primary);
533
+ margin-top: 0;
534
+
535
+ &:hover {
536
+ background: var(--tide-booking-color-primary-light);
537
+ border: var(--tide-booking-color-primary-light);
538
+ }
539
+ }
540
+ }
541
+ }