@qite/tide-booking-component 1.2.4 → 1.2.5

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