@qite/tide-booking-component 1.2.4 → 1.3.0

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 (119) hide show
  1. package/build/build-cjs/booking-wizard/components/print-offer-button.d.ts +17 -0
  2. package/build/build-cjs/booking-wizard/features/flight-options/flight-option-flight.d.ts +1 -1
  3. package/build/build-cjs/booking-wizard/features/flight-options/flight-option.d.ts +1 -1
  4. package/build/build-cjs/booking-wizard/types.d.ts +13 -0
  5. package/build/build-cjs/booking-wizard/use-offer-printer.d.ts +13 -0
  6. package/build/build-cjs/index.js +1392 -754
  7. package/build/build-cjs/shared/utils/localization-util.d.ts +6 -0
  8. package/build/build-cjs/shared/utils/tide-api-utils.d.ts +1 -0
  9. package/build/build-esm/booking-wizard/components/print-offer-button.d.ts +17 -0
  10. package/build/build-esm/booking-wizard/features/flight-options/flight-option-flight.d.ts +1 -1
  11. package/build/build-esm/booking-wizard/features/flight-options/flight-option.d.ts +1 -1
  12. package/build/build-esm/booking-wizard/types.d.ts +13 -0
  13. package/build/build-esm/booking-wizard/use-offer-printer.d.ts +13 -0
  14. package/build/build-esm/index.js +1394 -756
  15. package/build/build-esm/shared/utils/localization-util.d.ts +6 -0
  16. package/build/build-esm/shared/utils/tide-api-utils.d.ts +1 -0
  17. package/package.json +4 -6
  18. package/src/booking-product/components/age-select.tsx +2 -8
  19. package/src/booking-product/components/amount-input.tsx +36 -22
  20. package/src/booking-product/components/date-range-picker/calendar-day.tsx +5 -1
  21. package/src/booking-product/components/date-range-picker/calendar.tsx +9 -7
  22. package/src/booking-product/components/date-range-picker/index.tsx +20 -5
  23. package/src/booking-product/components/dates.tsx +22 -18
  24. package/src/booking-product/components/footer.tsx +40 -41
  25. package/src/booking-product/components/header.tsx +44 -33
  26. package/src/booking-product/components/icon.tsx +188 -145
  27. package/src/booking-product/components/product.tsx +66 -33
  28. package/src/booking-product/components/rooms.tsx +70 -55
  29. package/src/booking-product/index.tsx +9 -9
  30. package/src/booking-product/settings-context.ts +3 -3
  31. package/src/booking-product/types.ts +3 -3
  32. package/src/booking-product/utils/api.ts +4 -4
  33. package/src/booking-product/utils/price.ts +5 -3
  34. package/src/booking-wizard/components/icon.tsx +428 -229
  35. package/src/booking-wizard/components/multi-range-filter.tsx +15 -15
  36. package/src/booking-wizard/components/print-offer-button.tsx +66 -0
  37. package/src/booking-wizard/components/step-indicator.tsx +1 -1
  38. package/src/booking-wizard/declarations.d.ts +2 -2
  39. package/src/booking-wizard/features/booking/api.ts +9 -5
  40. package/src/booking-wizard/features/booking/booking-self-contained.tsx +46 -19
  41. package/src/booking-wizard/features/booking/booking-slice.ts +108 -49
  42. package/src/booking-wizard/features/booking/booking.tsx +64 -57
  43. package/src/booking-wizard/features/booking/selectors.ts +45 -22
  44. package/src/booking-wizard/features/confirmation/confirmation.tsx +8 -5
  45. package/src/booking-wizard/features/error/error.tsx +6 -3
  46. package/src/booking-wizard/features/flight-options/flight-filter.tsx +147 -72
  47. package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +53 -21
  48. package/src/booking-wizard/features/flight-options/flight-option-modal.tsx +34 -19
  49. package/src/booking-wizard/features/flight-options/flight-option.tsx +37 -22
  50. package/src/booking-wizard/features/flight-options/flight-utils.ts +220 -105
  51. package/src/booking-wizard/features/flight-options/index.tsx +62 -43
  52. package/src/booking-wizard/features/price-details/price-details-slice.ts +11 -4
  53. package/src/booking-wizard/features/product-options/no-options.tsx +1 -1
  54. package/src/booking-wizard/features/product-options/option-booking-airline-group.tsx +48 -50
  55. package/src/booking-wizard/features/product-options/option-booking-group.tsx +9 -3
  56. package/src/booking-wizard/features/product-options/option-item.tsx +1 -2
  57. package/src/booking-wizard/features/product-options/option-pax-card.tsx +39 -26
  58. package/src/booking-wizard/features/product-options/option-pax-group.tsx +9 -3
  59. package/src/booking-wizard/features/product-options/option-room.tsx +23 -16
  60. package/src/booking-wizard/features/product-options/option-unit-group.tsx +9 -3
  61. package/src/booking-wizard/features/product-options/option-units-card.tsx +68 -57
  62. package/src/booking-wizard/features/product-options/options-form.tsx +250 -124
  63. package/src/booking-wizard/features/room-options/index.tsx +27 -12
  64. package/src/booking-wizard/features/room-options/room-utils.ts +97 -50
  65. package/src/booking-wizard/features/room-options/room.tsx +56 -20
  66. package/src/booking-wizard/features/room-options/traveler-rooms.tsx +34 -22
  67. package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +1 -1
  68. package/src/booking-wizard/features/sidebar/sidebar-util.ts +1 -1
  69. package/src/booking-wizard/features/sidebar/sidebar.tsx +173 -155
  70. package/src/booking-wizard/features/summary/summary-flight.tsx +1 -1
  71. package/src/booking-wizard/features/summary/summary-per-booking-option-group.tsx +45 -33
  72. package/src/booking-wizard/features/summary/summary-per-pax-option-group.tsx +41 -29
  73. package/src/booking-wizard/features/summary/summary-per-unit-option-group.tsx +43 -31
  74. package/src/booking-wizard/features/summary/summary.tsx +325 -294
  75. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +421 -422
  76. package/src/booking-wizard/features/travelers-form/type-ahead-input.tsx +1 -1
  77. package/src/booking-wizard/features/travelers-form/validate-form.ts +1 -1
  78. package/src/booking-wizard/settings-context.ts +7 -0
  79. package/src/booking-wizard/types.ts +19 -7
  80. package/src/booking-wizard/use-offer-printer.ts +136 -0
  81. package/src/index.ts +0 -1
  82. package/src/shared/translations/en-GB.json +237 -0
  83. package/src/shared/translations/fr-BE.json +7 -2
  84. package/src/shared/translations/nl-BE.json +5 -0
  85. package/src/shared/types.ts +1 -1
  86. package/src/shared/utils/localization-util.ts +9 -3
  87. package/src/shared/utils/query-string-util.ts +6 -3
  88. package/src/shared/utils/tide-api-utils.ts +1 -1
  89. package/styles/booking-product-variables.scss +174 -68
  90. package/styles/booking-product.scss +294 -288
  91. package/styles/booking-wizard-variables.scss +872 -529
  92. package/styles/booking-wizard.scss +35 -2
  93. package/styles/components/_base.scss +3 -2
  94. package/styles/components/_booking.scss +149 -679
  95. package/styles/components/_button.scss +55 -2
  96. package/styles/components/_checkbox.scss +7 -3
  97. package/styles/components/_cta.scss +86 -11
  98. package/styles/components/_date-list.scss +41 -0
  99. package/styles/components/_date-range-picker.scss +3 -3
  100. package/styles/components/_decrement-increment.scss +1 -3
  101. package/styles/components/_dropdown.scss +2 -4
  102. package/styles/components/_flight-option.scss +454 -414
  103. package/styles/components/_form.scss +1266 -77
  104. package/styles/components/_info-message.scss +71 -0
  105. package/styles/components/_input.scss +25 -0
  106. package/styles/components/_list.scss +111 -6
  107. package/styles/components/_loader.scss +4 -3
  108. package/styles/components/_mixins.scss +30 -10
  109. package/styles/components/_placeholders.scss +11 -11
  110. package/styles/components/_pricing-summary.scss +40 -2
  111. package/styles/components/_qsm.scss +1 -4
  112. package/styles/components/_radiobutton.scss +170 -0
  113. package/styles/components/_select-wrapper.scss +18 -4
  114. package/styles/components/_spinner.scss +29 -0
  115. package/styles/components/_step-indicators.scss +14 -6
  116. package/styles/components/_table.scss +9 -9
  117. package/styles/components/_tree.scss +31 -41
  118. package/styles/components/_typeahead.scss +281 -0
  119. package/styles/components/_variables.scss +15 -15
@@ -1,4 +1,3 @@
1
-
2
1
  .booking {
3
2
  @extend %reset;
4
3
  width: 100%;
@@ -31,31 +30,39 @@
31
30
  transform: translate3D(-50%, -50%, 0);
32
31
  text-align: center;
33
32
  border-radius: 5px;
34
- background-color: $white;
35
- box-shadow: 0 10px 30px fade-out($black, 0.9);
33
+ background-color: var(--tide-booking-spinner-background);
34
+ box-shadow: var(--tide-booking-spinner-box-shadow);
36
35
  z-index: 999;
37
36
 
38
37
  .loader__spinner {
39
38
  width: 40px;
40
39
  height: 40px;
41
40
  border-width: 4px;
41
+ margin-bottom: 20px;
42
42
  }
43
43
  }
44
44
 
45
45
  &__navigator {
46
+ gap: 15px;
47
+
46
48
  @include row--xs;
47
49
  justify-content: flex-end;
48
- padding: 0;
50
+ padding: 0 15px;
49
51
  padding-top: 30px;
52
+ padding-bottom: 60px;
50
53
  // background-color: $gray-light;
51
54
 
52
55
  @include media-lg {
53
- padding: 0;
56
+ padding: 0 15px;
54
57
  padding-top: 50px;
55
58
  }
56
59
 
57
- .cta--secondary{
58
- margin-right: auto;
60
+ .cta--secondary {
61
+ width: 100%;
62
+ @include media-xs {
63
+ width: auto;
64
+ margin-right: auto;
65
+ }
59
66
  }
60
67
  }
61
68
 
@@ -74,10 +81,6 @@
74
81
  }
75
82
  }
76
83
 
77
- &__panel-frame {
78
- background-color: white;
79
- }
80
-
81
84
  &__panel-heading {
82
85
  @extend %reset;
83
86
  width: 100%;
@@ -89,7 +92,6 @@
89
92
  display: flex;
90
93
  justify-content: space-between;
91
94
  align-items: center;
92
-
93
95
  }
94
96
 
95
97
  &__panel-title {
@@ -102,14 +104,14 @@
102
104
  @extend %reset;
103
105
  @include column;
104
106
  width: 100%;
105
- font-size: 16px;
107
+ font-size: 14px;
106
108
 
107
109
  // @include media-sm {
108
110
  // font-size: 1.5rem;
109
111
  // }
110
112
 
111
113
  @include media-lg {
112
- font-size: 18px;
114
+ font-size: 16px;
113
115
  }
114
116
  }
115
117
 
@@ -118,7 +120,7 @@
118
120
 
119
121
  .booking__panel-heading {
120
122
  //padding: 0;
121
- padding-bottom: 30px;
123
+ margin-bottom: 30px;
122
124
  }
123
125
 
124
126
  .booking__panel-body {
@@ -131,7 +133,9 @@
131
133
 
132
134
  &__product {
133
135
  @extend %reset;
134
- position: relative;
136
+ position: sticky;
137
+ top: 0px;
138
+ left: 0px;
135
139
  border-radius: var(--tide-booking-sidebar-header-border-radius);
136
140
  overflow: hidden;
137
141
  display: flex;
@@ -195,9 +199,9 @@
195
199
  display: flex;
196
200
  justify-content: center;
197
201
  align-items: center;
198
- border: none;
199
- border-radius: 5px;
200
- background-color: fade-out($white, 0.8);
202
+ border: var(--tide-booking-sidebar-btn-toggle-border);
203
+ border-radius: var(--tide-booking-sidebar-btn-toggle-border-radius);
204
+ background: var(--tide-booking-sidebar-btn-toggle-background);
201
205
 
202
206
  @include media-lg {
203
207
  display: none;
@@ -209,14 +213,14 @@
209
213
  width: 8px;
210
214
  height: 8px;
211
215
  transform: rotate(135deg) translate3D(1px, -1px, 0);
212
- border-left: 1.5px solid $white;
213
- border-bottom: 1.5px solid $white;
216
+ border-left: 1.5px solid var(--tide-booking-sidebar-btn-toggle-color);
217
+ border-bottom: 1.5px solid var(--tide-booking-sidebar-btn-toggle-color);
214
218
  }
215
219
  }
216
220
 
217
221
  &__sidebar {
218
222
  position: fixed;
219
- width: calc(100% - 30px);
223
+ width: calc(100% - 0px);
220
224
  max-height: calc(100vh - 90px);
221
225
  bottom: 0;
222
226
  right: 0;
@@ -237,9 +241,10 @@
237
241
  position: sticky;
238
242
  width: 400px;
239
243
  max-height: none;
240
- top: 15px;
244
+ top: 40px;
241
245
  bottom: initial;
242
246
  transform: none;
247
+ min-height: 93vh;
243
248
  }
244
249
 
245
250
  .booking__product-heading {
@@ -249,12 +254,11 @@
249
254
  }
250
255
 
251
256
  &__sidebar-frame {
252
- border-radius: 1rem;
257
+ border-radius: var(--tide-booking-sidebar-frame-radius);
253
258
  background-color: var(--tide-booking-sidebar-body-background);
259
+ height: calc(100vh - 86px);
254
260
  }
255
261
 
256
-
257
-
258
262
  &__sidebar--active {
259
263
  transform: translate3D(0, 0, 0);
260
264
  overflow-y: auto;
@@ -314,10 +318,10 @@
314
318
  }
315
319
  }
316
320
 
317
- .form__region {
318
- padding-left: 15px;
319
- padding-right: 15px;
320
- }
321
+ // .form__region {
322
+ // padding-left: 15px;
323
+ // padding-right: 15px;
324
+ // }
321
325
 
322
326
  .loader__spinner {
323
327
  width: 50px;
@@ -364,13 +368,13 @@
364
368
 
365
369
  .table--borders {
366
370
  .checkbox {
367
- padding-top: 2rem !important;
371
+ padding-top: 20px !important;
368
372
 
369
373
  &__label {
370
374
  padding-top: 0;
371
375
  padding-bottom: 0;
372
- margin-bottom: -0.5rem;
373
- margin-top: -0.5rem;
376
+ margin-bottom: -5px;
377
+ margin-top: -5px;
374
378
 
375
379
  @include media-lg {
376
380
  padding: 0;
@@ -381,15 +385,15 @@
381
385
  }
382
386
 
383
387
  .price {
384
- top: 1.5rem;
388
+ top: 15px;
385
389
 
386
390
  @include media-lg {
387
- top: 1rem;
391
+ top: 10px;
388
392
  }
389
393
  }
390
394
 
391
395
  .radiobutton {
392
- padding-top: 2rem !important;
396
+ padding-top: 20px !important;
393
397
  }
394
398
 
395
399
  .tree {
@@ -400,19 +404,19 @@
400
404
 
401
405
  &__columns-actions {
402
406
  @include media-lg {
403
- margin-bottom: -2.25rem;
404
- transform: translate3D(-1.5rem, -3.75rem, 0) !important;
407
+ margin-bottom: -22.5px;
408
+ transform: translate3D(-15px, -37.5px, 0) !important;
405
409
  }
406
410
 
407
411
  @include media-xl {
408
412
  margin-bottom: initial;
409
- transform: translate3D(-1.5rem, 0, 0) !important;
413
+ transform: translate3D(-15px, 0, 0) !important;
410
414
  }
411
415
  }
412
416
 
413
417
  &__column--price {
414
418
  @include media-lg {
415
- transform: translateY(1.75rem);
419
+ transform: translateY(17.5px);
416
420
  }
417
421
 
418
422
  @include media-xl {
@@ -421,15 +425,15 @@
421
425
  }
422
426
 
423
427
  .checkbox {
424
- padding-top: 0.3rem;
425
- margin-top: 1rem;
428
+ padding-top: 3px;
429
+ margin-top: 10px;
426
430
 
427
431
  &__input,
428
432
  &__input--parent {
429
- top: 0.6rem;
433
+ top: 6px;
430
434
 
431
435
  @include media-lg {
432
- top: 1.8rem;
436
+ top: 18px;
433
437
  }
434
438
 
435
439
  & + span {
@@ -439,15 +443,15 @@
439
443
  }
440
444
 
441
445
  .radiobutton {
442
- padding-top: 0.3rem;
443
- margin-top: 1rem;
446
+ padding-top: 3px;
447
+ margin-top: 10px;
444
448
 
445
449
  &__input,
446
450
  &__input--parent {
447
- top: 1rem;
451
+ top: 10px;
448
452
 
449
453
  @include media-lg {
450
- top: 1.8rem;
454
+ top: 18px;
451
455
  }
452
456
 
453
457
  & + span {
@@ -457,25 +461,26 @@
457
461
  }
458
462
  }
459
463
 
460
- tr + tr {
461
- .checkbox {
462
- border-top: 0.1rem solid rgba(0, 0, 0, 0.1);
463
- }
464
+ // tr + tr {
465
+ // .checkbox {
466
+ // border-top: 0.1rem solid rgba(0, 0, 0, 0.1);
467
+ // }
464
468
 
465
- .radiobutton {
466
- border-top: 0.1rem solid rgba(0, 0, 0, 0.1);
467
- }
468
- }
469
+ // .radiobutton {
470
+ // border-top: 0.1rem solid rgba(0, 0, 0, 0.1);
471
+ // }
472
+ // }
469
473
  }
470
474
 
471
475
  .tree {
472
476
  padding: 7.5px 10px;
473
477
  font-size: 13px;
478
+ margin: 0 15px;
474
479
  transition-duration: 0.12s;
475
480
  transition-property: border-color, color, background-color;
476
481
 
477
482
  @include media-lg {
478
- padding: 5px 15px 0 15px;
483
+ padding: 0px 15px 0 15px;
479
484
  font-size: 16px;
480
485
  }
481
486
 
@@ -524,13 +529,15 @@
524
529
  position: relative;
525
530
  // background-color: $white;
526
531
  transition: height ease-out 0.2s;
532
+ display: flex;
533
+ flex-direction: column;
534
+ gap: 30px;
527
535
  }
528
536
 
529
537
  &__body-heading {
530
538
  min-width: 140px;
531
- transform: translateY(-2px);
532
539
  font-size: 16px;
533
- color: $black;
540
+ color: var(--tide-booking-extra-options-card-title-color);
534
541
 
535
542
  @include media-lg {
536
543
  font-size: 20px;
@@ -538,22 +545,30 @@
538
545
  }
539
546
 
540
547
  &__group {
541
- padding: 15px 0; &__wrapper {
548
+ padding: 15px 0;
549
+ background: var(--tide-booking-extra-options-card-background);
550
+ outline: var(--tide-booking-extra-options-card-border);
551
+ border-radius: var(--tide-booking-extra-options-card-border-radius);
552
+ overflow: hidden;
553
+ transition: padding 0.4s ease, margin 0.4s ease, background-color 0.4s ease;
554
+
555
+ &__wrapper {
542
556
  display: flex;
543
557
  flex-direction: column;
544
558
  gap: 20px;
545
559
  }
546
560
 
547
561
  &:not(.booking-card__group--active) {
548
- padding-bottom: 0;
562
+ padding-bottom: 27px;
563
+ transition: padding-bottom 0.4s ease;
549
564
 
550
-
551
- .booking-card__body-heading {
552
- transform: translateY(2px);
565
+ @include media-lg {
566
+ padding-bottom: 15px;
553
567
  }
554
568
 
555
569
  .booking-card__group-header {
556
570
  margin-bottom: -13px;
571
+ transition: margin-bottom 0.4s ease;
557
572
 
558
573
  @include media-lg {
559
574
  margin-bottom: initial;
@@ -561,10 +576,6 @@
561
576
  }
562
577
 
563
578
  .price {
564
- // position: absolute;
565
- // right: 4.5rem;
566
- // top: 0.2rem;
567
-
568
579
  @include media-lg {
569
580
  position: static;
570
581
  right: initial;
@@ -574,15 +585,12 @@
574
585
  }
575
586
 
576
587
  &.booking-card__group--package {
577
- padding: 40px 0 0;
588
+ padding: 40px 10px 20px;
578
589
  margin-top: -25px;
579
590
  margin-bottom: 15px;
591
+ transition: all 0.4s ease;
580
592
 
581
593
  @include media-lg {
582
- padding: 0 17.5px;
583
- }
584
-
585
- @include media-xl {
586
594
  padding: 20px 17.5px;
587
595
  }
588
596
 
@@ -591,17 +599,18 @@
591
599
  padding-top: 0;
592
600
  opacity: 1;
593
601
  pointer-events: initial;
602
+ transition: opacity 0.4s ease, padding 0.4s ease;
594
603
  }
595
604
 
596
605
  .radiobutton__label-text {
597
606
  @include media-lg {
598
607
  transform: translateY(20px);
608
+ transition: transform 0.4s ease;
599
609
  }
600
610
  }
601
611
 
602
612
  .tree {
603
613
  padding-bottom: 0;
604
-
605
614
  @include media-lg {
606
615
  padding-bottom: 7.5px;
607
616
  }
@@ -609,16 +618,13 @@
609
618
 
610
619
  tr + tr {
611
620
  transform: translateY(-10px);
621
+ transition: transform 0.4s ease;
612
622
  }
613
623
 
614
- tr:last-child {
615
- .tree {
616
- padding-bottom: 7.5px;
617
- margin-bottom: -10px;
618
-
619
- @include media-lg {
620
- margin-bottom: -15px;
621
- }
624
+ tr:last-child .tree {
625
+ padding-bottom: 7.5px;
626
+ @include media-lg {
627
+ // empty but transition inherited
622
628
  }
623
629
  }
624
630
  }
@@ -630,30 +636,27 @@
630
636
  height: auto;
631
637
  opacity: 1;
632
638
  pointer-events: initial;
633
- transition-property: height, opacity;
634
-
635
- @include media-lg {
636
- padding-top: 30px;
637
- }
639
+ transition: height 0.4s ease, opacity 0.4s ease;
638
640
  }
639
641
 
640
642
  &__toggle {
641
643
  &:before {
642
- transform: rotate(-45deg) translate3D(2px, 0, 0);
644
+ transform: rotate(-45deg) translate3D(2px, -2px, 0);
645
+ transition: transform 0.4s ease;
643
646
  }
644
647
  }
645
648
 
646
649
  &__group-body + &__group-body {
647
650
  margin-top: 25px;
651
+ transition: margin-top 0.4s ease;
648
652
  }
649
653
  }
650
654
  }
651
655
 
652
656
  &__group + &__group {
653
- border-top: 1.5px solid $gray-border-medium;
654
-
655
657
  .booking-card__group-header {
656
658
  margin-top: 0;
659
+ transition: margin-top 0.4s ease;
657
660
  }
658
661
  }
659
662
 
@@ -675,9 +678,11 @@
675
678
  margin-bottom: -10px;
676
679
  display: flex;
677
680
  flex-direction: column;
681
+ padding: 0px 15px;
678
682
 
679
683
  @include media-lg {
680
684
  flex-direction: row;
685
+ align-items: center;
681
686
  }
682
687
 
683
688
  * {
@@ -688,6 +693,8 @@
688
693
  &__group-heading {
689
694
  margin-top: 7.5px;
690
695
  font-size: 14.5px;
696
+ padding: 15px;
697
+ padding-bottom: 0px;
691
698
 
692
699
  @include media-lg {
693
700
  margin-top: 0;
@@ -695,8 +702,15 @@
695
702
  }
696
703
  }
697
704
 
705
+ &__airline-group {
706
+ &-heading {
707
+ margin-top: 30px;
708
+ margin-left: 15px;
709
+ }
710
+ }
711
+
698
712
  &__header {
699
- padding: 60px 0 15px;
713
+ padding: 30px 0 0px;
700
714
  }
701
715
 
702
716
  &__header-heading {
@@ -710,15 +724,18 @@
710
724
 
711
725
  &__tag {
712
726
  position: absolute;
713
- top: 15px;
727
+ top: 0px;
714
728
  left: 0;
715
729
  padding: 6px 5px 6px 10px;
716
730
  font-size: 14px;
717
731
  line-height: 1;
718
732
  text-transform: uppercase;
719
- border-radius: 0 5px 5px 0;
720
- color: $white;
721
- background-color: $color-primary;
733
+ font-weight: var(--tide-booking-tag-font-weight);
734
+ font-family: var(--tide-booking-tag-font-family);
735
+ border: var(--tide-booking-tag-border);
736
+ border-radius: var(--tide-booking-tag-border-radius);
737
+ color: var(--tide-booking-tag-color);
738
+ background: var(--tide-booking-tag-background);
722
739
 
723
740
  @include media-lg {
724
741
  top: 25px;
@@ -727,25 +744,25 @@
727
744
  }
728
745
 
729
746
  @include media-xl {
730
- top: 45px;
747
+ top: 25px;
731
748
  }
732
749
 
733
- &-translations{
750
+ &-translations {
734
751
  position: relative;
735
752
  display: flex;
736
753
  flex-direction: column;
737
754
  gap: 10px;
738
755
  padding: 5px 10px;
739
756
 
740
- .tag-translation{
757
+ .tag-translation {
741
758
  display: flex;
742
759
  gap: 1px;
743
760
  align-items: center;
744
761
 
745
- &-input__container{
762
+ &-input__container {
746
763
  display: flex;
747
-
748
- .checkbox__input{
764
+
765
+ .checkbox__input {
749
766
  position: relative;
750
767
  margin: 0 10px 0 0;
751
768
  }
@@ -756,26 +773,34 @@
756
773
 
757
774
  &__toggle {
758
775
  position: relative;
759
- width: 30px;
760
- height: 30px;
761
- transform: translateY(-0.3rem);
776
+ width: 36px;
777
+ height: 36px;
778
+ right: 5px;
762
779
  display: flex;
763
780
  justify-content: center;
764
781
  align-items: center;
765
- border-radius: 5px;
766
- border: 1.5px solid $gray-border-medium;
767
- background-color: $white;
782
+ border-radius: var(
783
+ --tide-booking-flight-extra-options-toggle-border-radius
784
+ );
785
+ border: var(--tide-booking-flight-extra-options-toggle-border);
786
+ background: var(--tide-booking-flight-extra-options-toggle-background);
768
787
 
769
788
  &:before {
770
789
  content: "";
771
790
  position: absolute;
772
- width: 8.1px;
773
- height: 8.1px;
774
- border-left: 1.5px solid #000;
775
- border-bottom: 1.5px solid #000;
791
+ width: 9px;
792
+ height: 9px;
793
+ border-left: 2px solid
794
+ var(--tide-booking-flight-extra-options-toggle-icon-color);
795
+ border-bottom: 2px solid
796
+ var(--tide-booking-flight-extra-options-toggle-icon-color);
776
797
  transform: rotate(-135deg) translate3D(1px, -1px, 0);
777
798
  transition: transform ease-out 0.12s;
778
799
  }
800
+
801
+ @include media-lg {
802
+ right: 0px;
803
+ }
779
804
  }
780
805
 
781
806
  .price {
@@ -783,11 +808,11 @@
783
808
  font-size: var(--tide-booking-sidebar-footer-total-font-size);
784
809
 
785
810
  &--decrease {
786
- color: $price-decrease;
811
+ color: var(--tide-booking-price-decrease);
787
812
  }
788
813
 
789
814
  &--increase {
790
- color: $price-increase;
815
+ color: var(--tide-booking-price-increase);
791
816
  }
792
817
  }
793
818
 
@@ -830,580 +855,25 @@
830
855
  &--error {
831
856
  .booking-message {
832
857
  &__heading {
833
- color: $invalid;
858
+ color: var(--tide-booking-invalid);
834
859
  }
835
860
  }
861
+ .icon {
862
+ width: 50px;
863
+ height: 50px;
864
+ fill: var(--tide-booking-invalid);
865
+ }
836
866
  }
837
867
 
838
868
  &--success {
839
869
  .booking-message__heading:before {
840
870
  content: "";
841
- width: $gutter * 3.33;
842
- height: $gutter * 1.33;
843
- border-left: 0.25rem solid $black;
844
- border-bottom: 0.25rem solid $black;
845
- margin: 0 auto $gutter * 3 auto;
871
+ width: 15px * 3.33;
872
+ height: 15px * 1.33;
873
+ border-left: 2.5px solid var(--tide-booking-confirmation-icon-color);
874
+ border-bottom: 2.5px solid var(--tide-booking-confirmation-icon-color);
875
+ margin: 0 auto 15px * 3 auto;
846
876
  transform: rotate(-45deg);
847
877
  }
848
878
  }
849
879
  }
850
-
851
-
852
- .booking-product{
853
- background-color: $bg-secondary;
854
- border-radius: 0.5rem;
855
- width: 100%;
856
-
857
- &__container{
858
- max-width: 169rem;
859
- margin: 0 auto;
860
- display: flex;
861
- justify-content: center;
862
- padding: 0 1.5rem;
863
-
864
- @include media-md {
865
- padding: 0 3rem;
866
- }
867
-
868
- @include media-lg {
869
- padding: 0 4.5rem;
870
- }
871
- }
872
-
873
-
874
- &__header {
875
- @include column;
876
- justify-content: space-between;
877
- background-color: $color-primary;
878
- color: $white;
879
- border-radius: 0.5rem 0.5rem 0 0;
880
- padding: 2rem 3rem;
881
- gap: 2rem;
882
-
883
- @include media-sm {
884
- @include row;
885
- justify-content: space-between;
886
- flex-direction: row;
887
- gap: 1rem;
888
- }
889
- }
890
-
891
- &__hotel {
892
- @include column;
893
- gap: 1rem;
894
-
895
- .rating {
896
- svg {
897
- fill: $white;
898
- width: 2.1rem;
899
- height: 2rem;
900
- }
901
- }
902
- }
903
-
904
- &__title {
905
- @include heading;
906
- font-size: 2.4rem;
907
- color: $white;
908
-
909
- @include media-md {
910
- font-size: 3rem;
911
- }
912
- }
913
-
914
- &__price {
915
- @include column;
916
- gap: 1rem;
917
-
918
- .pricing {
919
- @include column;
920
- justify-content: flex-start !important;
921
- align-items: flex-start !important;
922
- gap: 0.2rem;
923
-
924
- @include media-md {
925
- justify-content: flex-end !important;
926
- align-items: flex-end !important;
927
- }
928
-
929
- &__price {
930
- color: $white;
931
- font-size: 2rem;
932
-
933
- @include media-md {
934
- font-size: 2.5rem;
935
- }
936
- }
937
-
938
- &__header {
939
- @include row;
940
- justify-content: flex-start;
941
- flex-shrink: 0;
942
- white-space: nowrap;
943
-
944
- @include media-md {
945
- justify-content: flex-end;
946
- }
947
-
948
- * {
949
- line-height: 1;
950
- }
951
- }
952
-
953
- &__footer {
954
- text-transform: uppercase;
955
- font-size: 1.2rem;
956
- }
957
- }
958
-
959
- .package-icons {
960
- justify-content: flex-end;
961
-
962
- @include media-md {
963
- width: auto;
964
- margin-left: auto !important;
965
- }
966
-
967
- svg {
968
- fill: $white;
969
- }
970
- }
971
-
972
- .package-icons{
973
- display: flex;
974
- justify-content: flex-start;
975
- align-items: center;
976
- }
977
-
978
- .package-icons__icon {
979
- display: flex;
980
- justify-content: flex-start;
981
- align-items: center;
982
- }
983
-
984
- .package-icons__icon + .package-icons__icon:before {
985
- content: "+";
986
- display: inline;
987
- margin: 0 1rem;
988
- transition: color .2s ease-out;
989
- }
990
- }
991
-
992
- &__body {
993
- @include column;
994
- justify-content: space-between;
995
- padding: 2rem 3rem;
996
- gap: 3rem;
997
-
998
- // @include media-lg {
999
- // display: grid;
1000
- // grid-template-columns: repeat(2, 1fr);
1001
- // gap: 2rem;
1002
- // }
1003
-
1004
- .booking-product__room {
1005
- &__frame {
1006
- opacity: 1;
1007
- max-width: 100%;
1008
- max-height: inherit;
1009
- background-color: transparent;
1010
- border: none;
1011
- width: 100%;
1012
-
1013
- .button--increment,
1014
- .button--decrement {
1015
- width: 2.6rem;
1016
- height: 2.6rem;
1017
- flex: none;
1018
- }
1019
-
1020
- .decrement-increment {
1021
- &__label {
1022
- opacity: 0.5;
1023
- margin-right: 0.5rem;
1024
- }
1025
-
1026
- &__input {
1027
- background-color: $bg-secondary;
1028
- height: 2rem;
1029
- }
1030
- }
1031
- }
1032
-
1033
- &__header,
1034
- &__body,
1035
- &__group-header,
1036
- &__footer {
1037
- background-color: transparent;
1038
- padding: 0;
1039
- }
1040
-
1041
- &__actions {
1042
- position: relative;
1043
- right: 0;
1044
- display: flex;
1045
- flex-direction: column;
1046
- gap: .5rem;
1047
-
1048
- @include media-md {
1049
- flex-direction: row;
1050
- gap: 3rem;
1051
- }
1052
- }
1053
-
1054
- &-children{
1055
- margin-top: 2rem;
1056
- display: flex;
1057
- flex-direction: column;
1058
- gap: .3rem;
1059
-
1060
- &-ages{
1061
- display: grid;
1062
- grid-template-columns: repeat(auto-fit, minmax(130px, 130px));
1063
- gap: 1rem;
1064
- }
1065
- }
1066
-
1067
- &__body {
1068
- max-height: inherit;
1069
- }
1070
-
1071
- &__header {
1072
- border: none;
1073
- border-radius: 0;
1074
- box-shadow: none;
1075
- display: flex;
1076
- flex-direction: column;
1077
- gap: .3rem;
1078
-
1079
- margin-top: 2rem;
1080
- }
1081
-
1082
- &__heading {
1083
- font-family: "proxima-nova", sans-serif;
1084
- font-size: 1.6rem;
1085
- font-weight: bold;
1086
- margin-bottom: 0rem;
1087
- }
1088
-
1089
- &__group {
1090
- border: none;
1091
-
1092
- &-header {
1093
- position: relative;
1094
- }
1095
-
1096
- &-heading {
1097
- width: 30%;
1098
-
1099
- &__title {
1100
- font-family: "proxima-nova", sans-serif;
1101
- font-size: 1.6rem;
1102
- margin: 0;
1103
- }
1104
-
1105
- &__subtitle {
1106
- display: block;
1107
- width: 150px;
1108
- line-height: 1;
1109
- transform: translateY(-0.65rem);
1110
- opacity: 0.5;
1111
- font-size: 1.4rem;
1112
-
1113
- @include media-xs {
1114
- width: 250px;
1115
- }
1116
- @include media-sm {
1117
- width: 400px;
1118
- transform: translateY(-0.6rem);
1119
- }
1120
- @include media-md {
1121
- width: 130px;
1122
- }
1123
- @include media-lg {
1124
- width: 200px;
1125
- }
1126
- @include media-xl {
1127
- width: 350px;
1128
- }
1129
- }
1130
- }
1131
-
1132
- &-actions {
1133
- width: 70%;
1134
- margin-top: 0;
1135
- gap: 0rem;
1136
- justify-content: flex-end;
1137
-
1138
- @include media-xs {
1139
- gap: 1rem;
1140
- }
1141
- }
1142
-
1143
- &-children {
1144
- background-color: $white;
1145
- margin-bottom: 1rem;
1146
- &:before {
1147
- border-color: transparent;
1148
- background-color: $bg-secondary;
1149
- }
1150
- }
1151
-
1152
- &:nth-child(2n) {
1153
- transform: translateY(-0.5rem);
1154
- }
1155
- }
1156
- }
1157
-
1158
- .form__group {
1159
- &--datepicker {
1160
- @include column;
1161
- align-items: center;
1162
- gap: 1rem;
1163
- margin-bottom: 0.5rem;
1164
- position: relative;
1165
-
1166
- @include media-sm {
1167
- flex-direction: row;
1168
- }
1169
-
1170
- .form__group-input {
1171
- width: 100%;
1172
-
1173
- @include media-sm {
1174
- width: 50%;
1175
- }
1176
-
1177
- &:nth-child(1),
1178
- &:nth-child(2) {
1179
- .form__input {
1180
- border-radius: 0.5rem;
1181
- border-right: 0.1rem solid $gray-background-light;
1182
- border-left: 0.1rem solid $gray-background-light;
1183
- }
1184
- }
1185
- }
1186
-
1187
- .qsm__panel {
1188
- display: flex;
1189
- background-color: rgba(255, 255, 255, 0.97);
1190
- z-index: 98;
1191
- visibility: hidden;
1192
- opacity: 0;
1193
- transition: all 0.3s ease-in-out;
1194
-
1195
- &--active {
1196
- visibility: visible;
1197
- pointer-events: all;
1198
- opacity: 1;
1199
- width: 100vw;
1200
-
1201
- @include media-sm {
1202
- width: auto;
1203
- }
1204
- }
1205
- }
1206
- }
1207
-
1208
- .form__label {
1209
- margin-bottom: 0;
1210
- opacity: 0.5;
1211
- left: 1.75rem;
1212
- }
1213
- }
1214
- }
1215
-
1216
- &__dates {
1217
- margin-top: 0rem;
1218
-
1219
- &:first-child {
1220
- margin-top: 0;
1221
- }
1222
-
1223
- &-title {
1224
- @include row;
1225
- @include heading;
1226
- align-items: center;
1227
- font-size: 2.5rem;
1228
- margin-bottom: 1rem;
1229
-
1230
- svg {
1231
- width: 1.7rem;
1232
- height: 1.7rem;
1233
- padding-right: 1.5rem;
1234
- fill: $black;
1235
- }
1236
- }
1237
- }
1238
-
1239
- &__rooms {
1240
- margin-top: 0rem;
1241
-
1242
- &:first-child {
1243
- margin-top: 0;
1244
- }
1245
-
1246
- &-title {
1247
- @include row;
1248
- @include heading;
1249
- align-items: center;
1250
- font-size: 2.5rem;
1251
- margin-bottom: 1rem;
1252
-
1253
- svg {
1254
- width: 1.7rem;
1255
- height: 1.7rem;
1256
- padding-right: 1.5rem;
1257
- fill: $black;
1258
- }
1259
- }
1260
-
1261
- &__header {
1262
- border: none;
1263
- border-radius: 0;
1264
- box-shadow: none;
1265
- display: flex;
1266
- flex-direction: column;
1267
- gap: .3rem;
1268
- margin-bottom: 3rem;
1269
- }
1270
-
1271
- &__heading {
1272
- font-family: "proxima-nova", sans-serif;
1273
- font-size: 1.8rem;
1274
- font-weight: bold;
1275
- margin-bottom: 0rem;
1276
- color: $black;
1277
- }
1278
- }
1279
-
1280
- &__flights {
1281
- @include row;
1282
- flex-direction: column;
1283
- justify-content: space-between;
1284
- gap: 1rem;
1285
- margin-bottom: 1.5rem;
1286
-
1287
- @include media-lg {
1288
- flex-direction: row;
1289
- }
1290
-
1291
- &-label {
1292
- opacity: 0.5;
1293
- }
1294
-
1295
- &-outward,
1296
- &-retour {
1297
- @include media-lg {
1298
- width: 50%;
1299
- }
1300
- }
1301
-
1302
- &-airport {
1303
- font-size: 1.4rem;
1304
- }
1305
-
1306
- &-info {
1307
- display: flex;
1308
- flex-direction: column;
1309
-
1310
- &--datetime{
1311
- display: flex;
1312
- align-items: center;
1313
- }
1314
-
1315
- .fa-exclamation-circle {
1316
- z-index: 1001;
1317
- position: relative;
1318
- color: #e74c3c;
1319
- margin-left: .5rem;
1320
-
1321
- &:hover .tooltip--different-day {
1322
- display: flex;
1323
- }
1324
- }
1325
-
1326
- .tooltip {
1327
- display: none;
1328
- flex-direction: column;
1329
- align-items: start;
1330
- position: absolute;
1331
- right: -6px;
1332
- top: -39px;
1333
- background-color: white;
1334
- padding: 0.8rem;
1335
- box-shadow: 0px 5px 15px 2px #00000029;
1336
- box-shadow: 0 0.3rem 1rem #00000029;
1337
- border-radius: 5px;
1338
- z-index: 1000;
1339
-
1340
- &__title {
1341
- font-family: proxima-nova, sans-serif;
1342
- font-size: 1.2rem;
1343
- font-weight: bold;
1344
- color: #3f92ab;
1345
- white-space: nowrap;
1346
- }
1347
-
1348
- &__sub-title {
1349
- font-size: 1.2rem;
1350
- color: #86bac9;
1351
- }
1352
-
1353
- &:before {
1354
- content: "";
1355
- position: absolute;
1356
- display: block;
1357
- width: 0.9rem;
1358
- height: 0.9rem;
1359
- bottom: -5px;
1360
- left: 14rem;
1361
- transform: rotate(45deg);
1362
- border-bottom: 1px solid $white;
1363
- border-right: 1px solid $white;
1364
- background-color: $white;
1365
- }
1366
- }
1367
- }
1368
- }
1369
-
1370
- &__footer {
1371
- @include column;
1372
- gap: 1rem;
1373
- padding: 2rem 3rem;
1374
- border-top: 1px solid #dbdad4;
1375
-
1376
- &-total {
1377
- @include row;
1378
- justify-content: space-between;
1379
- min-height: 27px;
1380
- }
1381
-
1382
- &-actions {
1383
- display: flex;
1384
- gap: 1rem;
1385
- }
1386
-
1387
- &-label {
1388
- @include heading;
1389
- font-size: 2rem;
1390
- }
1391
-
1392
- &-price {
1393
- @include heading;
1394
- font-size: 2rem;
1395
- color: $gray-dark;
1396
- }
1397
-
1398
- &-cta {
1399
- @include row;
1400
- justify-content: space-between;
1401
- gap: 1rem;
1402
-
1403
- .cta {
1404
- width: 100% !important;
1405
- margin-left: 0 !important;
1406
- }
1407
- }
1408
- }
1409
- }