@qite/tide-booking-component 1.2.3 → 1.2.4

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 (47) hide show
  1. package/build/build-cjs/booking-product/components/footer.d.ts +1 -0
  2. package/build/build-cjs/booking-product/components/rooms.d.ts +2 -0
  3. package/build/build-cjs/booking-wizard/features/booking/selectors.d.ts +1 -1
  4. package/build/build-cjs/booking-wizard/types.d.ts +0 -1
  5. package/build/build-cjs/index.js +275 -44
  6. package/build/build-cjs/shared/utils/localization-util.d.ts +3 -0
  7. package/build/build-esm/booking-product/components/footer.d.ts +1 -0
  8. package/build/build-esm/booking-product/components/rooms.d.ts +2 -0
  9. package/build/build-esm/booking-wizard/features/booking/selectors.d.ts +1 -1
  10. package/build/build-esm/booking-wizard/types.d.ts +0 -1
  11. package/build/build-esm/index.js +276 -45
  12. package/build/build-esm/shared/utils/localization-util.d.ts +3 -0
  13. package/package.json +1 -1
  14. package/rollup.config.js +23 -23
  15. package/src/booking-product/components/footer.tsx +7 -1
  16. package/src/booking-product/components/product.tsx +4 -0
  17. package/src/booking-product/components/rating.tsx +21 -21
  18. package/src/booking-product/components/rooms.tsx +5 -2
  19. package/src/booking-wizard/components/icon.tsx +250 -1
  20. package/src/booking-wizard/components/labeled-input.tsx +64 -64
  21. package/src/booking-wizard/components/labeled-select.tsx +69 -69
  22. package/src/booking-wizard/features/booking/selectors.ts +12 -2
  23. package/src/booking-wizard/features/flight-options/flight-filter.tsx +16 -3
  24. package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +8 -6
  25. package/src/booking-wizard/features/flight-options/flight-option.tsx +1 -1
  26. package/src/booking-wizard/features/product-options/option-pax-card.tsx +93 -22
  27. package/src/booking-wizard/features/product-options/option-units-card.tsx +93 -21
  28. package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +2 -2
  29. package/src/booking-wizard/features/summary/summary.tsx +3 -1
  30. package/src/shared/utils/class-util.ts +9 -9
  31. package/styles/booking-wizard-variables.scss +530 -0
  32. package/styles/booking-wizard.scss +23 -1
  33. package/styles/components/_booking.scss +1409 -0
  34. package/styles/components/_checkbox.scss +215 -0
  35. package/styles/components/_cta.scss +80 -14
  36. package/styles/components/_date-range-picker.scss +1 -0
  37. package/styles/components/_flight-option.scss +1389 -0
  38. package/styles/components/_form.scss +258 -0
  39. package/styles/components/_list.scss +82 -0
  40. package/styles/components/_mixins.scss +17 -5
  41. package/styles/components/_placeholders.scss +2 -2
  42. package/styles/components/_pricing-summary.scss +117 -0
  43. package/styles/components/_select-wrapper.scss +66 -0
  44. package/styles/components/_step-indicators.scss +160 -0
  45. package/styles/components/_table.scss +81 -0
  46. package/styles/components/_tree.scss +540 -0
  47. package/tsconfig.json +24 -24
@@ -0,0 +1,1409 @@
1
+
2
+ .booking {
3
+ @extend %reset;
4
+ width: 100%;
5
+ padding: 2rem 0;
6
+ background: var(--tide-booking-wizard-background);
7
+
8
+ &__content {
9
+ @extend %reset;
10
+ @include container-wide;
11
+ @include row--lg();
12
+ align-items: flex-end;
13
+
14
+ @include media-lg {
15
+ align-items: flex-start;
16
+ }
17
+ }
18
+
19
+ &__guarantees {
20
+ display: none !important;
21
+ }
22
+
23
+ &__loader {
24
+ position: fixed;
25
+ width: 300px;
26
+ max-width: 90vw;
27
+ height: auto;
28
+ top: 50%;
29
+ left: 50%;
30
+ padding: 1.5rem;
31
+ transform: translate3D(-50%, -50%, 0);
32
+ text-align: center;
33
+ border-radius: 5px;
34
+ background-color: $white;
35
+ box-shadow: 0 10px 30px fade-out($black, 0.9);
36
+ z-index: 999;
37
+
38
+ .loader__spinner {
39
+ width: 40px;
40
+ height: 40px;
41
+ border-width: 4px;
42
+ }
43
+ }
44
+
45
+ &__navigator {
46
+ @include row--xs;
47
+ justify-content: flex-end;
48
+ padding: 0;
49
+ padding-top: 30px;
50
+ // background-color: $gray-light;
51
+
52
+ @include media-lg {
53
+ padding: 0;
54
+ padding-top: 50px;
55
+ }
56
+
57
+ .cta--secondary{
58
+ margin-right: auto;
59
+ }
60
+ }
61
+
62
+ &__panel {
63
+ width: 1200px;
64
+ max-width: 100%;
65
+ @include column;
66
+ border-radius: 15px * 0.3;
67
+
68
+ @include media-lg {
69
+ padding-right: 20px;
70
+ }
71
+
72
+ @include media-xl {
73
+ padding-right: 40px;
74
+ }
75
+ }
76
+
77
+ &__panel-frame {
78
+ background-color: white;
79
+ }
80
+
81
+ &__panel-heading {
82
+ @extend %reset;
83
+ width: 100%;
84
+ padding-bottom: 20px;
85
+ padding-left: 0 !important;
86
+ border-radius: 5px 5px 0 0;
87
+ color: var(--tide-booking-wizard-heading-color);
88
+ // background-color: $booking-background;
89
+ display: flex;
90
+ justify-content: space-between;
91
+ align-items: center;
92
+
93
+ }
94
+
95
+ &__panel-title {
96
+ @extend h3;
97
+ margin: 0;
98
+ color: var(--tide-booking-wizard-title-color);
99
+ }
100
+
101
+ &__panel-body {
102
+ @extend %reset;
103
+ @include column;
104
+ width: 100%;
105
+ font-size: 16px;
106
+
107
+ // @include media-sm {
108
+ // font-size: 1.5rem;
109
+ // }
110
+
111
+ @include media-lg {
112
+ font-size: 18px;
113
+ }
114
+ }
115
+
116
+ &__panel-frame--transparent {
117
+ background-color: transparent;
118
+
119
+ .booking__panel-heading {
120
+ //padding: 0;
121
+ padding-bottom: 30px;
122
+ }
123
+
124
+ .booking__panel-body {
125
+ .form__region {
126
+ // padding-left: 1.5rem;
127
+ // padding-right: 1.5rem;
128
+ }
129
+ }
130
+ }
131
+
132
+ &__product {
133
+ @extend %reset;
134
+ position: relative;
135
+ border-radius: var(--tide-booking-sidebar-header-border-radius);
136
+ overflow: hidden;
137
+ display: flex;
138
+ align-items: center;
139
+ background: var(--tide-booking-sidebar-header-background);
140
+ }
141
+
142
+ &__product-body {
143
+ display: flex;
144
+ flex-flow: column;
145
+ justify-content: center;
146
+
147
+ > h1 {
148
+ font-size: 18px;
149
+ }
150
+ }
151
+
152
+ &__product-heading {
153
+ @extend h5;
154
+ color: var(--tide-booking-sidebar-header-color);
155
+ }
156
+
157
+ &__product-image {
158
+ aspect-ratio: 1 / 1;
159
+ flex-shrink: 0;
160
+ display: inline-flex;
161
+ overflow: hidden;
162
+
163
+ img {
164
+ max-width: 80px;
165
+ max-height: 80px;
166
+ aspect-ratio: 1 / 1;
167
+ transform: scale(1.6);
168
+
169
+ @include media-xl {
170
+ max-width: 100px;
171
+ max-height: 100px;
172
+ }
173
+ }
174
+ }
175
+
176
+ &__product-text {
177
+ padding: 0 10px;
178
+ display: inline-flex;
179
+ flex-direction: column;
180
+ justify-content: center;
181
+ gap: 7.5px;
182
+ color: var(--tide-booking-sidebar-header-color);
183
+
184
+ * {
185
+ margin: 0;
186
+ }
187
+ }
188
+
189
+ &__product-toggle {
190
+ position: relative;
191
+ width: 30px;
192
+ height: 30px;
193
+ margin-right: 10px;
194
+ margin-left: auto;
195
+ display: flex;
196
+ justify-content: center;
197
+ align-items: center;
198
+ border: none;
199
+ border-radius: 5px;
200
+ background-color: fade-out($white, 0.8);
201
+
202
+ @include media-lg {
203
+ display: none;
204
+ }
205
+
206
+ &:before {
207
+ content: "";
208
+ position: absolute;
209
+ width: 8px;
210
+ height: 8px;
211
+ transform: rotate(135deg) translate3D(1px, -1px, 0);
212
+ border-left: 1.5px solid $white;
213
+ border-bottom: 1.5px solid $white;
214
+ }
215
+ }
216
+
217
+ &__sidebar {
218
+ position: fixed;
219
+ width: calc(100% - 30px);
220
+ max-height: calc(100vh - 90px);
221
+ bottom: 0;
222
+ right: 0;
223
+ transform: translate3D(0, calc(100% - 80px), 0);
224
+ margin-left: auto;
225
+ @include column;
226
+ border-radius: 15px * 0.3;
227
+ @extend %transition-easing;
228
+ @extend %scrollbar-transparent;
229
+ z-index: 10;
230
+
231
+ @include media-sm {
232
+ width: calc(100% - 60px);
233
+ max-width: 650px;
234
+ }
235
+
236
+ @include media-lg {
237
+ position: sticky;
238
+ width: 400px;
239
+ max-height: none;
240
+ top: 15px;
241
+ bottom: initial;
242
+ transform: none;
243
+ }
244
+
245
+ .booking__product-heading {
246
+ font-size: var(--tide-booking-sidebar-header-font-size) !important;
247
+ font-weight: var(--tide-booking-sidebar-header-font-weight);
248
+ }
249
+ }
250
+
251
+ &__sidebar-frame {
252
+ border-radius: 1rem;
253
+ background-color: var(--tide-booking-sidebar-body-background);
254
+ }
255
+
256
+
257
+
258
+ &__sidebar--active {
259
+ transform: translate3D(0, 0, 0);
260
+ overflow-y: auto;
261
+ z-index: 100;
262
+
263
+ .booking__product-toggle {
264
+ &:before {
265
+ transform: rotate(-45deg) translate3D(0.1rem, -0.1rem, 0);
266
+ }
267
+ }
268
+
269
+ .booking__sidebar-heading {
270
+ position: sticky;
271
+
272
+ @include media-lg {
273
+ position: static;
274
+ }
275
+
276
+ &:before {
277
+ margin-top: -0.3rem;
278
+ transform: rotate(-45deg);
279
+ }
280
+ }
281
+ }
282
+
283
+ .checkbox {
284
+ & + .tree__level {
285
+ padding-top: 0;
286
+ padding-left: 15px * 2;
287
+ }
288
+
289
+ &__input {
290
+ &:checked + .checkbox__label-text + .tree__columns-actions + .tree__body {
291
+ display: flex;
292
+ opacity: 1;
293
+ transform: none;
294
+ pointer-events: initial;
295
+ }
296
+ }
297
+
298
+ &__input--parent + span + .tree__columns-actions {
299
+ @include media-lg {
300
+ transform: translate3D(-15px, -15px, 0);
301
+ }
302
+
303
+ @include media-xl {
304
+ transform: translateX(-15px);
305
+ }
306
+ }
307
+
308
+ .tree__body {
309
+ display: none;
310
+ flex-direction: column;
311
+ transform: translateY(-30px);
312
+ opacity: 0;
313
+ @include transitionEasing($duration: 0.15s);
314
+ }
315
+ }
316
+
317
+ .form__region {
318
+ padding-left: 15px;
319
+ padding-right: 15px;
320
+ }
321
+
322
+ .loader__spinner {
323
+ width: 50px;
324
+ height: 50px;
325
+ border-width: 4px;
326
+ }
327
+
328
+ .radiobutton {
329
+ & + .tree__level {
330
+ padding-top: 0;
331
+ padding-left: 15px * 2;
332
+ }
333
+
334
+ &__input {
335
+ &:checked
336
+ + .radiobutton__label-text
337
+ + .tree__columns-actions
338
+ + .tree__body {
339
+ display: flex;
340
+ transform: translateY(0);
341
+ opacity: 1;
342
+ pointer-events: initial;
343
+ }
344
+ }
345
+
346
+ &__input--parent + span + .tree__columns-actions {
347
+ @include media-lg {
348
+ transform: translate3D(-15px, -15px, 0);
349
+ }
350
+
351
+ @include media-xl {
352
+ transform: translateX(-15px);
353
+ }
354
+ }
355
+
356
+ .tree__body {
357
+ display: none;
358
+ flex-direction: column;
359
+ transform: translateY(-30px);
360
+ opacity: 0;
361
+ @include transitionEasing($duration: 0.15s);
362
+ }
363
+ }
364
+
365
+ .table--borders {
366
+ .checkbox {
367
+ padding-top: 2rem !important;
368
+
369
+ &__label {
370
+ padding-top: 0;
371
+ padding-bottom: 0;
372
+ margin-bottom: -0.5rem;
373
+ margin-top: -0.5rem;
374
+
375
+ @include media-lg {
376
+ padding: 0;
377
+ margin-top: 0;
378
+ margin-bottom: 0;
379
+ }
380
+ }
381
+ }
382
+
383
+ .price {
384
+ top: 1.5rem;
385
+
386
+ @include media-lg {
387
+ top: 1rem;
388
+ }
389
+ }
390
+
391
+ .radiobutton {
392
+ padding-top: 2rem !important;
393
+ }
394
+
395
+ .tree {
396
+ padding-top: 0;
397
+ padding-bottom: 0 !important;
398
+ border-color: transparent;
399
+ background-color: transparent;
400
+
401
+ &__columns-actions {
402
+ @include media-lg {
403
+ margin-bottom: -2.25rem;
404
+ transform: translate3D(-1.5rem, -3.75rem, 0) !important;
405
+ }
406
+
407
+ @include media-xl {
408
+ margin-bottom: initial;
409
+ transform: translate3D(-1.5rem, 0, 0) !important;
410
+ }
411
+ }
412
+
413
+ &__column--price {
414
+ @include media-lg {
415
+ transform: translateY(1.75rem);
416
+ }
417
+
418
+ @include media-xl {
419
+ transform: initial;
420
+ }
421
+ }
422
+
423
+ .checkbox {
424
+ padding-top: 0.3rem;
425
+ margin-top: 1rem;
426
+
427
+ &__input,
428
+ &__input--parent {
429
+ top: 0.6rem;
430
+
431
+ @include media-lg {
432
+ top: 1.8rem;
433
+ }
434
+
435
+ & + span {
436
+ margin-bottom: 0;
437
+ }
438
+ }
439
+ }
440
+
441
+ .radiobutton {
442
+ padding-top: 0.3rem;
443
+ margin-top: 1rem;
444
+
445
+ &__input,
446
+ &__input--parent {
447
+ top: 1rem;
448
+
449
+ @include media-lg {
450
+ top: 1.8rem;
451
+ }
452
+
453
+ & + span {
454
+ margin-bottom: 0;
455
+ }
456
+ }
457
+ }
458
+ }
459
+
460
+ tr + tr {
461
+ .checkbox {
462
+ border-top: 0.1rem solid rgba(0, 0, 0, 0.1);
463
+ }
464
+
465
+ .radiobutton {
466
+ border-top: 0.1rem solid rgba(0, 0, 0, 0.1);
467
+ }
468
+ }
469
+ }
470
+
471
+ .tree {
472
+ padding: 7.5px 10px;
473
+ font-size: 13px;
474
+ transition-duration: 0.12s;
475
+ transition-property: border-color, color, background-color;
476
+
477
+ @include media-lg {
478
+ padding: 5px 15px 0 15px;
479
+ font-size: 16px;
480
+ }
481
+
482
+ @include media-xl {
483
+ padding: 7.5px 15px;
484
+ }
485
+
486
+ &__columns {
487
+ > .tree__column:first-child {
488
+ @include media-lg {
489
+ width: 245px;
490
+ }
491
+ }
492
+ }
493
+
494
+ .date-list__item + .date-list__item:before {
495
+ @include media-lg {
496
+ margin-right: 10px !important;
497
+ }
498
+ }
499
+ }
500
+ }
501
+
502
+ .booking-card {
503
+ position: relative;
504
+ // margin-left: -1.5rem;
505
+ // margin-right: -1.5rem;
506
+ //margin-bottom: 4.5rem;
507
+
508
+ &__actions {
509
+ position: absolute;
510
+ right: 10px;
511
+ margin-left: auto;
512
+ margin-bottom: auto;
513
+ display: flex;
514
+ gap: 15px;
515
+
516
+ @include media-lg {
517
+ position: static;
518
+ right: initial;
519
+ }
520
+ }
521
+
522
+ &__body {
523
+ border-radius: 5px;
524
+ position: relative;
525
+ // background-color: $white;
526
+ transition: height ease-out 0.2s;
527
+ }
528
+
529
+ &__body-heading {
530
+ min-width: 140px;
531
+ transform: translateY(-2px);
532
+ font-size: 16px;
533
+ color: $black;
534
+
535
+ @include media-lg {
536
+ font-size: 20px;
537
+ }
538
+ }
539
+
540
+ &__group {
541
+ padding: 15px 0; &__wrapper {
542
+ display: flex;
543
+ flex-direction: column;
544
+ gap: 20px;
545
+ }
546
+
547
+ &:not(.booking-card__group--active) {
548
+ padding-bottom: 0;
549
+
550
+
551
+ .booking-card__body-heading {
552
+ transform: translateY(2px);
553
+ }
554
+
555
+ .booking-card__group-header {
556
+ margin-bottom: -13px;
557
+
558
+ @include media-lg {
559
+ margin-bottom: initial;
560
+ }
561
+ }
562
+
563
+ .price {
564
+ // position: absolute;
565
+ // right: 4.5rem;
566
+ // top: 0.2rem;
567
+
568
+ @include media-lg {
569
+ position: static;
570
+ right: initial;
571
+ top: initial;
572
+ }
573
+ }
574
+ }
575
+
576
+ &.booking-card__group--package {
577
+ padding: 40px 0 0;
578
+ margin-top: -25px;
579
+ margin-bottom: 15px;
580
+
581
+ @include media-lg {
582
+ padding: 0 17.5px;
583
+ }
584
+
585
+ @include media-xl {
586
+ padding: 20px 17.5px;
587
+ }
588
+
589
+ .booking-card__group-body {
590
+ height: auto;
591
+ padding-top: 0;
592
+ opacity: 1;
593
+ pointer-events: initial;
594
+ }
595
+
596
+ .radiobutton__label-text {
597
+ @include media-lg {
598
+ transform: translateY(20px);
599
+ }
600
+ }
601
+
602
+ .tree {
603
+ padding-bottom: 0;
604
+
605
+ @include media-lg {
606
+ padding-bottom: 7.5px;
607
+ }
608
+ }
609
+
610
+ tr + tr {
611
+ transform: translateY(-10px);
612
+ }
613
+
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
+ }
622
+ }
623
+ }
624
+ }
625
+ }
626
+
627
+ &__group--active {
628
+ .booking-card {
629
+ &__group-body {
630
+ height: auto;
631
+ opacity: 1;
632
+ pointer-events: initial;
633
+ transition-property: height, opacity;
634
+
635
+ @include media-lg {
636
+ padding-top: 30px;
637
+ }
638
+ }
639
+
640
+ &__toggle {
641
+ &:before {
642
+ transform: rotate(-45deg) translate3D(2px, 0, 0);
643
+ }
644
+ }
645
+
646
+ &__group-body + &__group-body {
647
+ margin-top: 25px;
648
+ }
649
+ }
650
+ }
651
+
652
+ &__group + &__group {
653
+ border-top: 1.5px solid $gray-border-medium;
654
+
655
+ .booking-card__group-header {
656
+ margin-top: 0;
657
+ }
658
+ }
659
+
660
+ &__group-body {
661
+ height: 0;
662
+ padding-top: 15px;
663
+ opacity: 0;
664
+ pointer-events: none;
665
+ transition-duration: 0.2s;
666
+ transition-property: height;
667
+ transition-timing-function: ease-out;
668
+
669
+ @include media-lg {
670
+ padding-top: 0;
671
+ }
672
+ }
673
+
674
+ &__group-header {
675
+ margin-bottom: -10px;
676
+ display: flex;
677
+ flex-direction: column;
678
+
679
+ @include media-lg {
680
+ flex-direction: row;
681
+ }
682
+
683
+ * {
684
+ margin-bottom: 0;
685
+ }
686
+ }
687
+
688
+ &__group-heading {
689
+ margin-top: 7.5px;
690
+ font-size: 14.5px;
691
+
692
+ @include media-lg {
693
+ margin-top: 0;
694
+ font-size: 17px;
695
+ }
696
+ }
697
+
698
+ &__header {
699
+ padding: 60px 0 15px;
700
+ }
701
+
702
+ &__header-heading {
703
+ font-size: 20px;
704
+ color: var(--tide-booking-wizard-heading-color);
705
+
706
+ @include media-lg {
707
+ font-size: 24px;
708
+ }
709
+ }
710
+
711
+ &__tag {
712
+ position: absolute;
713
+ top: 15px;
714
+ left: 0;
715
+ padding: 6px 5px 6px 10px;
716
+ font-size: 14px;
717
+ line-height: 1;
718
+ text-transform: uppercase;
719
+ border-radius: 0 5px 5px 0;
720
+ color: $white;
721
+ background-color: $color-primary;
722
+
723
+ @include media-lg {
724
+ top: 25px;
725
+ padding: 6px 5px;
726
+ font-size: 16px;
727
+ }
728
+
729
+ @include media-xl {
730
+ top: 45px;
731
+ }
732
+
733
+ &-translations{
734
+ position: relative;
735
+ display: flex;
736
+ flex-direction: column;
737
+ gap: 10px;
738
+ padding: 5px 10px;
739
+
740
+ .tag-translation{
741
+ display: flex;
742
+ gap: 1px;
743
+ align-items: center;
744
+
745
+ &-input__container{
746
+ display: flex;
747
+
748
+ .checkbox__input{
749
+ position: relative;
750
+ margin: 0 10px 0 0;
751
+ }
752
+ }
753
+ }
754
+ }
755
+ }
756
+
757
+ &__toggle {
758
+ position: relative;
759
+ width: 30px;
760
+ height: 30px;
761
+ transform: translateY(-0.3rem);
762
+ display: flex;
763
+ justify-content: center;
764
+ align-items: center;
765
+ border-radius: 5px;
766
+ border: 1.5px solid $gray-border-medium;
767
+ background-color: $white;
768
+
769
+ &:before {
770
+ content: "";
771
+ position: absolute;
772
+ width: 8.1px;
773
+ height: 8.1px;
774
+ border-left: 1.5px solid #000;
775
+ border-bottom: 1.5px solid #000;
776
+ transform: rotate(-135deg) translate3D(1px, -1px, 0);
777
+ transition: transform ease-out 0.12s;
778
+ }
779
+ }
780
+
781
+ .price {
782
+ white-space: nowrap;
783
+ font-size: var(--tide-booking-sidebar-footer-total-font-size);
784
+
785
+ &--decrease {
786
+ color: $price-decrease;
787
+ }
788
+
789
+ &--increase {
790
+ color: $price-increase;
791
+ }
792
+ }
793
+
794
+ .table--borders {
795
+ margin-top: -10px;
796
+ margin-bottom: -5px;
797
+
798
+ @include media-lg {
799
+ margin-bottom: -15px;
800
+ }
801
+ }
802
+
803
+ select,
804
+ input,
805
+ textarea {
806
+ font-size: 14px;
807
+
808
+ @include media-lg {
809
+ font-size: 16px;
810
+ }
811
+ }
812
+ }
813
+
814
+ .booking-message {
815
+ max-width: 570px;
816
+ margin: 15px * 2 auto;
817
+ @include column;
818
+ align-items: center;
819
+ text-align: center;
820
+
821
+ &__heading {
822
+ @include column;
823
+ margin-top: 15px * 1.3;
824
+ }
825
+
826
+ &__actions {
827
+ margin-top: 15px;
828
+ }
829
+
830
+ &--error {
831
+ .booking-message {
832
+ &__heading {
833
+ color: $invalid;
834
+ }
835
+ }
836
+ }
837
+
838
+ &--success {
839
+ .booking-message__heading:before {
840
+ 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;
846
+ transform: rotate(-45deg);
847
+ }
848
+ }
849
+ }
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
+ }