@qite/tide-components 1.0.10 → 1.0.13-preview.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 (93) hide show
  1. package/build/build-cjs/index.js +2386 -1305
  2. package/build/build-cjs/src/booking-wizard/features/booking/selectors.d.ts +1 -0
  3. package/build/build-cjs/src/booking-wizard/features/travelers-form/validate-form.d.ts +2 -1
  4. package/build/build-cjs/src/booking-wizard/types.d.ts +29 -1
  5. package/build/build-cjs/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +2 -0
  6. package/build/build-cjs/src/search-results/components/itinerary/index.d.ts +1 -0
  7. package/build/build-cjs/src/search-results/components/itinerary/itinerary-utils.d.ts +1 -0
  8. package/build/build-cjs/src/search-results/types.d.ts +8 -0
  9. package/build/build-cjs/src/search-results/utils/booked-entry-utils.d.ts +20 -0
  10. package/build/build-cjs/src/search-results/utils/traject-utils.d.ts +7 -0
  11. package/build/build-cjs/src/shared/booking/travelers-form.d.ts +13 -3
  12. package/build/build-esm/index.js +2390 -1309
  13. package/build/build-esm/src/booking-wizard/features/booking/selectors.d.ts +1 -0
  14. package/build/build-esm/src/booking-wizard/features/travelers-form/validate-form.d.ts +2 -1
  15. package/build/build-esm/src/booking-wizard/types.d.ts +29 -1
  16. package/build/build-esm/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +2 -0
  17. package/build/build-esm/src/search-results/components/itinerary/index.d.ts +1 -0
  18. package/build/build-esm/src/search-results/components/itinerary/itinerary-utils.d.ts +1 -0
  19. package/build/build-esm/src/search-results/types.d.ts +8 -0
  20. package/build/build-esm/src/search-results/utils/booked-entry-utils.d.ts +20 -0
  21. package/build/build-esm/src/search-results/utils/traject-utils.d.ts +7 -0
  22. package/build/build-esm/src/shared/booking/travelers-form.d.ts +13 -3
  23. package/package.json +2 -2
  24. package/styles/abstracts/_mixins.scss +74 -74
  25. package/styles/abstracts/_variables.scss +57 -57
  26. package/styles/base/_fonts.scss +2 -2
  27. package/styles/base/_normalize.scss +227 -227
  28. package/styles/base/_typography.scss +35 -35
  29. package/styles/booking-joker-variables.scss +596 -596
  30. package/styles/booking-product-variables.scss +330 -330
  31. package/styles/booking-product.scss +438 -438
  32. package/styles/booking-qsm-variables.scss +501 -501
  33. package/styles/booking-qsm.scss +52 -52
  34. package/styles/booking-search-results-variables.scss +734 -734
  35. package/styles/booking-search-results.scss +53 -53
  36. package/styles/booking-wizard-variables.scss +603 -603
  37. package/styles/booking-wizard.scss +61 -61
  38. package/styles/components/_accordion.scss +67 -67
  39. package/styles/components/_animations.scss +39 -39
  40. package/styles/components/_base.scss +107 -107
  41. package/styles/components/_booking.scss +906 -906
  42. package/styles/components/_breadcrumb.scss +92 -92
  43. package/styles/components/_button.scss +238 -238
  44. package/styles/components/_checkbox.scss +230 -230
  45. package/styles/components/_contact.scss +255 -255
  46. package/styles/components/_content.scss +336 -336
  47. package/styles/components/_cta.scss +238 -238
  48. package/styles/components/_date-list.scss +41 -41
  49. package/styles/components/_date-range-picker.scss +223 -223
  50. package/styles/components/_decrement-increment.scss +35 -35
  51. package/styles/components/_dropdown.scss +77 -77
  52. package/styles/components/_error.scss +50 -50
  53. package/styles/components/_faq.scss +30 -30
  54. package/styles/components/_flight-option.scss +1432 -1432
  55. package/styles/components/_flyin.scss +830 -830
  56. package/styles/components/_footer.scss +135 -135
  57. package/styles/components/_form.scss +1704 -1693
  58. package/styles/components/_gallery.scss +317 -317
  59. package/styles/components/_header.scss +113 -113
  60. package/styles/components/_image-with-text.scss +206 -206
  61. package/styles/components/_img-slider.scss +175 -175
  62. package/styles/components/_info-message.scss +75 -75
  63. package/styles/components/_input.scss +35 -35
  64. package/styles/components/_list.scss +185 -185
  65. package/styles/components/_loader.scss +152 -152
  66. package/styles/components/_login.scss +140 -140
  67. package/styles/components/_map-view.scss +1100 -1100
  68. package/styles/components/_mixins.scss +579 -579
  69. package/styles/components/_navbar.scss +765 -765
  70. package/styles/components/_passenger-picker.scss +306 -306
  71. package/styles/components/_phone-input.scss +8 -8
  72. package/styles/components/_placeholders.scss +165 -165
  73. package/styles/components/_pricing-summary.scss +163 -163
  74. package/styles/components/_qsm.scss +17 -17
  75. package/styles/components/_radiobutton.scss +170 -170
  76. package/styles/components/_search.scss +2197 -2197
  77. package/styles/components/_select-wrapper.scss +81 -81
  78. package/styles/components/_slider.scss +120 -128
  79. package/styles/components/_spinner.scss +29 -29
  80. package/styles/components/_step-indicators.scss +187 -187
  81. package/styles/components/_table.scss +81 -81
  82. package/styles/components/_tide-form.scss +578 -578
  83. package/styles/components/_tree.scss +648 -648
  84. package/styles/components/_typeahead.scss +275 -275
  85. package/styles/components/_variables.scss +89 -89
  86. package/styles/content-blocks-variables.scss +543 -543
  87. package/styles/content-blocks.scss +66 -66
  88. package/styles/font.scss +2 -2
  89. package/styles/qsm/_calendar.scss +274 -274
  90. package/styles/qsm/_qsm.scss +1097 -1097
  91. package/styles/search.scss +1200 -1200
  92. package/styles/tide-form-variables.scss +275 -275
  93. package/styles/tide-form.scss +56 -56
@@ -1,579 +1,579 @@
1
- // RESET
2
- @mixin reset {
3
- padding: 0;
4
- margin: 0;
5
- box-sizing: border-box;
6
- }
7
-
8
- // MEDIA QUERIES
9
- @mixin media-xxs {
10
- @media only screen and (min-width: 390px) {
11
- @content;
12
- }
13
- }
14
-
15
- @mixin media-xs {
16
- @media only screen and (min-width: 576px) {
17
- @content;
18
- }
19
- }
20
-
21
- @mixin media-sm {
22
- @media only screen and (min-width: 768px) {
23
- @content;
24
- }
25
- }
26
-
27
- @mixin media-md {
28
- @media only screen and (min-width: 992px) {
29
- @content;
30
- }
31
- }
32
-
33
- @mixin media-lg {
34
- @media only screen and (min-width: 1200px) {
35
- @content;
36
- }
37
- }
38
-
39
- @mixin media-xgl {
40
- @media only screen and (min-width: 1440px) {
41
- @content;
42
- }
43
- }
44
-
45
- @mixin media-xl {
46
- @media only screen and (min-width: 1650px) {
47
- @content;
48
- }
49
- }
50
-
51
- @mixin media-xxl {
52
- @media only screen and (min-width: 1920px) {
53
- @content;
54
- }
55
- }
56
-
57
- @mixin orientation--landscape {
58
- @media only screen and (orientation: landscape) {
59
- @content;
60
- }
61
- }
62
-
63
- // GRID
64
- @mixin container() {
65
- width: 100%;
66
- padding: 0 15px;
67
- margin: 0 auto;
68
-
69
- @include media-sm {
70
- padding: 0 30px;
71
- }
72
-
73
- @include media-lg {
74
- padding: 0 45px;
75
- }
76
- }
77
-
78
- @mixin container-wide() {
79
- @include container();
80
- max-width: var(--tide-booking-container-wide);
81
- }
82
-
83
- @mixin container-medium() {
84
- @include container();
85
- max-width: var(--tide-booking-container-medium);
86
- }
87
-
88
- @mixin container-small() {
89
- @include container();
90
- max-width: var(--tide-booking-container-small);
91
- }
92
-
93
- @mixin container-article() {
94
- @include container();
95
- max-width: var(--tide-booking-container-article);
96
- }
97
-
98
- @mixin row() {
99
- display: flex;
100
- justify-content: center;
101
- //flex-wrap: wrap;
102
- }
103
-
104
- @mixin row--xs() {
105
- display: flex;
106
- flex-direction: column;
107
-
108
- @include media-xs {
109
- flex-direction: row;
110
- }
111
- }
112
-
113
- @mixin row--sm() {
114
- display: flex;
115
- flex-direction: column;
116
-
117
- @include media-sm {
118
- flex-direction: row;
119
- }
120
- }
121
-
122
- @mixin row--md() {
123
- display: flex;
124
- flex-direction: column;
125
-
126
- @include media-md {
127
- flex-direction: row;
128
- }
129
- }
130
-
131
- @mixin row--lg() {
132
- display: flex;
133
- flex-direction: column;
134
-
135
- @include media-lg {
136
- flex-direction: row;
137
- }
138
- }
139
-
140
- @mixin row--xl() {
141
- display: flex;
142
- flex-direction: column;
143
-
144
- @include media-xl {
145
- flex-direction: row;
146
- }
147
- }
148
-
149
- @mixin row--xxl() {
150
- display: flex;
151
- flex-direction: column;
152
-
153
- @include media-xxl {
154
- flex-direction: row;
155
- }
156
- }
157
-
158
- @mixin column() {
159
- display: flex;
160
- flex-direction: column;
161
- }
162
-
163
- @mixin column--xs() {
164
- display: flex;
165
-
166
- @include media-xs {
167
- flex-direction: column;
168
- }
169
- }
170
-
171
- @mixin column--sm() {
172
- display: flex;
173
-
174
- @include media-sm {
175
- flex-direction: column;
176
- }
177
- }
178
-
179
- @mixin column--md() {
180
- display: flex;
181
-
182
- @include media-md {
183
- flex-direction: column;
184
- }
185
- }
186
-
187
- @mixin column--lg() {
188
- display: flex;
189
-
190
- @include media-lg {
191
- flex-direction: column;
192
- }
193
- }
194
-
195
- @mixin column--xl() {
196
- display: flex;
197
-
198
- @include media-xl {
199
- flex-direction: column;
200
- }
201
- }
202
-
203
- @mixin column--xxl() {
204
- display: flex;
205
-
206
- @include media-xxl {
207
- flex-direction: column;
208
- }
209
- }
210
-
211
- @mixin gutter() {
212
- padding: 10px;
213
-
214
- @include media-sm {
215
- padding: 20px;
216
- }
217
-
218
- @include media-lg {
219
- padding: 30px;
220
- }
221
- }
222
-
223
- @mixin gutter--compact() {
224
- padding: 10px;
225
-
226
- @include media-sm {
227
- padding: 15px;
228
- }
229
-
230
- @include media-lg {
231
- padding: 20px;
232
- }
233
- }
234
-
235
- @mixin flex--centerXY() {
236
- display: inline-flex;
237
- justify-content: center;
238
- align-items: center;
239
- }
240
-
241
- @mixin flex--centerX() {
242
- display: inline-flex;
243
- justify-content: center;
244
- }
245
-
246
- @mixin flex--centerY() {
247
- display: inline-flex;
248
- align-items: center;
249
- }
250
-
251
- @mixin object-fit--cover() {
252
- object-fit: cover;
253
- }
254
-
255
- @mixin object-fit--contain() {
256
- object-fit: contain;
257
- }
258
-
259
- @mixin object-position--center() {
260
- object-position: center;
261
- }
262
-
263
- @mixin overflow--x {
264
- overflow-x: auto;
265
- overflow-y: hidden;
266
- }
267
-
268
- @mixin overflow--y {
269
- overflow-x: hidden;
270
- overflow-y: auto;
271
- }
272
-
273
- @mixin overflow--xy {
274
- overflow: auto;
275
- }
276
-
277
- // UI
278
-
279
- @mixin body {
280
- font-family: var(--tide-booking-font-body);
281
- font-size: var(--tide-booking-font-size-body);
282
- line-height: var(--tide-booking-line-height-body);
283
- color: var(--tide-booking-gray-dark);
284
- -webkit-font-smoothing: antialiased;
285
- -moz-osx-font-smoothing: grayscale;
286
-
287
- @include media-lg {
288
- font-size: var(--tide-booking-font-size-body-lg);
289
- }
290
-
291
- &.has-overlay,
292
- &.has-itinerary-schedule-active {
293
- overflow: hidden;
294
- }
295
- }
296
-
297
- @mixin input {
298
- min-height: var(--tide-booking-input-height);
299
- padding: 0 15px;
300
- border: var(--tide-booking-input-border);
301
- border-radius: var(--tide-booking-input-border-radius);
302
- font-family: var(--tide-booking-font-body);
303
- //font-size: 1.6rem;
304
- font-size: var(--tide-booking-font-size-body);
305
- font-weight: 400;
306
- outline: none;
307
- color: var(--tide-booking-input-color);
308
- background: var(--tide-booking-input-background);
309
-
310
- @include media-lg {
311
- font-size: var(--tide-booking-font-size-body-lg);
312
- min-height: var(--tide-booking-input-height-lg);
313
- }
314
-
315
- &:hover {
316
- border: var(--tide-booking-input-border-hover);
317
- }
318
-
319
- &:focus {
320
- border: var(--tide-booking-input-border-focus);
321
- }
322
-
323
- &:hover,
324
- &:focus,
325
- &:focus-within,
326
- &:active {
327
- outline: none;
328
- }
329
- }
330
-
331
- @mixin textarea {
332
- min-height: 250px;
333
- max-height: 60vh;
334
- padding: 12px 15px;
335
- font-family: var(--tide-booking-font-body);
336
- //font-size: 1.6rem
337
- font-size: var(--input-font-size--mobile);
338
- border: var(--tide-booking-input-border);
339
- border-radius: var(--tide-booking-input-border-radius);
340
- color: var(--tide-booking-input-color);
341
- background: var(--tide-booking-input-background);
342
- resize: vertical;
343
- outline: none;
344
-
345
- @include media-xs {
346
- //font-size: 1.8rem;
347
- font-size: var(--input-font-size--desktop);
348
- }
349
-
350
- &:hover {
351
- border: var(--tide-booking-input-border-hover);
352
- }
353
-
354
- &:focus {
355
- border: var(--tide-booking-input-border-focus);
356
- }
357
-
358
- &:focus,
359
- &:active {
360
- border: var(--tide-booking-input-border-focus);
361
- }
362
- }
363
-
364
- @mixin button {
365
- cursor: pointer;
366
- outline: none;
367
-
368
- &:hover,
369
- &:focus,
370
- &:active {
371
- outline: none;
372
- }
373
- }
374
-
375
- @mixin strong {
376
- font-weight: 400;
377
- color: var(--tide-booking-black);
378
- }
379
-
380
- @mixin small {
381
- font-size: var(--tide-booking-small-font-size--mobile);
382
-
383
- @include media-xs {
384
- font-size: var(--tide-booking-small-font-size--desktop);
385
- }
386
- }
387
-
388
- @mixin border-radius {
389
- border-radius: 5px;
390
- }
391
-
392
- @mixin lineclamp($lineclamp-amount: 1) {
393
- display: block;
394
- display: -webkit-box;
395
- -webkit-line-clamp: $lineclamp-amount;
396
- overflow: hidden;
397
- text-overflow: ellipsis;
398
- -webkit-box-orient: vertical;
399
- /* autoprefixer: off */
400
- }
401
-
402
- @mixin placeholder {
403
- font-style: var(--tide-booking-form-input-placeholder-font-style);
404
- color: var(--tide-booking-form-input-placeholder-color);
405
- }
406
-
407
- @mixin hover-to-color {
408
- &:hover {
409
- color: var(--tide-booking-black);
410
- }
411
- }
412
-
413
- @mixin focus-to-color {
414
- &:focus,
415
- &:active {
416
- color: var(--tide-booking-black);
417
- }
418
- }
419
-
420
- // TYPOGRAPHY
421
- @mixin heading {
422
- margin: 0;
423
- display: inline-flex;
424
- flex-flow: row wrap;
425
- font-family: var(--tide-booking-font-heading);
426
- font-weight: normal;
427
- line-height: 1.35;
428
- word-break: break-word;
429
- color: var(--tide-booking-heading-color);
430
-
431
- &:empty {
432
- display: none;
433
- }
434
-
435
- em {
436
- width: 100%;
437
- font-family: var(--tide-booking-font-handwritten);
438
- font-style: normal;
439
- }
440
- }
441
-
442
- @mixin h1 {
443
- font-size: var(--tide-booking-h1);
444
-
445
- @include media-sm {
446
- font-size: var(--tide-booking-h1-sm);
447
- }
448
-
449
- @include media-xl {
450
- font-size: var(--tide-booking-h1-xl);
451
- }
452
- }
453
-
454
- @mixin h2 {
455
- font-size: var(--tide-booking-h2);
456
-
457
- @include media-sm {
458
- font-size: var(--tide-booking-h2-sm);
459
- }
460
-
461
- @include media-xl {
462
- font-size: var(--tide-booking-h2-xl);
463
- }
464
- }
465
-
466
- @mixin h3 {
467
- font-size: var(--tide-booking-h3);
468
-
469
- @include media-sm {
470
- font-size: var(--tide-booking-h3-sm);
471
- }
472
-
473
- @include media-xl {
474
- font-size: var(--tide-booking-h3-xl);
475
- }
476
- }
477
-
478
- @mixin h4 {
479
- font-size: var(--tide-booking-h4);
480
-
481
- @include media-sm {
482
- font-size: var(--tide-booking-h4-sm);
483
- }
484
-
485
- @include media-xl {
486
- font-size: var(--tide-booking-h4-xl);
487
- }
488
- }
489
-
490
- @mixin h5 {
491
- font-size: var(--tide-booking-h5);
492
-
493
- @include media-xl {
494
- font-size: var(--tide-booking-h5-xl);
495
- }
496
- }
497
-
498
- @mixin h6 {
499
- font-size: var(--tide-booking-h6);
500
-
501
- @include media-md {
502
- font-size: var(--tide-booking-h6-md);
503
- }
504
- }
505
-
506
- @mixin a {
507
- color: var(--tide-booking-a-color);
508
- cursor: pointer;
509
- outline: none;
510
- text-decoration: var(--tide-booking-a-text-decoration);
511
- @extend %transition-easing;
512
-
513
- &:hover,
514
- &:focus,
515
- &:active {
516
- outline: none;
517
- }
518
-
519
- &:hover {
520
- color: var(--tide-booking-a-color-hover);
521
- text-decoration: var(--tide-booking-a-text-decoration-hover);
522
- }
523
-
524
- &:focus,
525
- &:active {
526
- color: var(--tide-booking-a-color-focus);
527
- text-decoration: var(--tide-booking-a-text-decoration-focus);
528
- }
529
- }
530
-
531
- // ANIMATIONS
532
- @mixin transitionEasing($duration: 0.35s) {
533
- transition-duration: $duration;
534
- transition-property: width, height, transform, border, fill, color, background, box-shadow, opacity;
535
- transition-timing-function: ease-out;
536
- }
537
-
538
- // INTERACTIONS
539
- @mixin hoverToColor() {
540
- &:hover {
541
- opacity: 1;
542
- outline: none;
543
- fill: var(--tide-booking-color-primary);
544
- color: var(--tide-booking-color-primary);
545
- background-color: var(--tide-booking-transparent);
546
- }
547
- }
548
-
549
- @mixin activeToColor() {
550
- &:active {
551
- opacity: 1;
552
- outline: none;
553
- fill: var(--tide-booking-color-primary-dark);
554
- color: var(--tide-booking-color-primary-dark);
555
- background-color: var(--tide-booking-transparent);
556
- }
557
- }
558
-
559
- @mixin slideDown($duration: 0.35s) {
560
- @keyframes in {
561
- 0% {
562
- transform: translate3D(0, -100%, 0);
563
- }
564
-
565
- 100% {
566
- transform: translate3D(0, 0, 0);
567
- }
568
- }
569
-
570
- @keyframes out {
571
- 0% {
572
- transform: translate3D(0, 0, 0);
573
- }
574
-
575
- 100% {
576
- transform: translate3D(0, -100%, 0);
577
- }
578
- }
579
- }
1
+ // RESET
2
+ @mixin reset {
3
+ padding: 0;
4
+ margin: 0;
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ // MEDIA QUERIES
9
+ @mixin media-xxs {
10
+ @media only screen and (min-width: 390px) {
11
+ @content;
12
+ }
13
+ }
14
+
15
+ @mixin media-xs {
16
+ @media only screen and (min-width: 576px) {
17
+ @content;
18
+ }
19
+ }
20
+
21
+ @mixin media-sm {
22
+ @media only screen and (min-width: 768px) {
23
+ @content;
24
+ }
25
+ }
26
+
27
+ @mixin media-md {
28
+ @media only screen and (min-width: 992px) {
29
+ @content;
30
+ }
31
+ }
32
+
33
+ @mixin media-lg {
34
+ @media only screen and (min-width: 1200px) {
35
+ @content;
36
+ }
37
+ }
38
+
39
+ @mixin media-xgl {
40
+ @media only screen and (min-width: 1440px) {
41
+ @content;
42
+ }
43
+ }
44
+
45
+ @mixin media-xl {
46
+ @media only screen and (min-width: 1650px) {
47
+ @content;
48
+ }
49
+ }
50
+
51
+ @mixin media-xxl {
52
+ @media only screen and (min-width: 1920px) {
53
+ @content;
54
+ }
55
+ }
56
+
57
+ @mixin orientation--landscape {
58
+ @media only screen and (orientation: landscape) {
59
+ @content;
60
+ }
61
+ }
62
+
63
+ // GRID
64
+ @mixin container() {
65
+ width: 100%;
66
+ padding: 0 15px;
67
+ margin: 0 auto;
68
+
69
+ @include media-sm {
70
+ padding: 0 30px;
71
+ }
72
+
73
+ @include media-lg {
74
+ padding: 0 45px;
75
+ }
76
+ }
77
+
78
+ @mixin container-wide() {
79
+ @include container();
80
+ max-width: var(--tide-booking-container-wide);
81
+ }
82
+
83
+ @mixin container-medium() {
84
+ @include container();
85
+ max-width: var(--tide-booking-container-medium);
86
+ }
87
+
88
+ @mixin container-small() {
89
+ @include container();
90
+ max-width: var(--tide-booking-container-small);
91
+ }
92
+
93
+ @mixin container-article() {
94
+ @include container();
95
+ max-width: var(--tide-booking-container-article);
96
+ }
97
+
98
+ @mixin row() {
99
+ display: flex;
100
+ justify-content: center;
101
+ //flex-wrap: wrap;
102
+ }
103
+
104
+ @mixin row--xs() {
105
+ display: flex;
106
+ flex-direction: column;
107
+
108
+ @include media-xs {
109
+ flex-direction: row;
110
+ }
111
+ }
112
+
113
+ @mixin row--sm() {
114
+ display: flex;
115
+ flex-direction: column;
116
+
117
+ @include media-sm {
118
+ flex-direction: row;
119
+ }
120
+ }
121
+
122
+ @mixin row--md() {
123
+ display: flex;
124
+ flex-direction: column;
125
+
126
+ @include media-md {
127
+ flex-direction: row;
128
+ }
129
+ }
130
+
131
+ @mixin row--lg() {
132
+ display: flex;
133
+ flex-direction: column;
134
+
135
+ @include media-lg {
136
+ flex-direction: row;
137
+ }
138
+ }
139
+
140
+ @mixin row--xl() {
141
+ display: flex;
142
+ flex-direction: column;
143
+
144
+ @include media-xl {
145
+ flex-direction: row;
146
+ }
147
+ }
148
+
149
+ @mixin row--xxl() {
150
+ display: flex;
151
+ flex-direction: column;
152
+
153
+ @include media-xxl {
154
+ flex-direction: row;
155
+ }
156
+ }
157
+
158
+ @mixin column() {
159
+ display: flex;
160
+ flex-direction: column;
161
+ }
162
+
163
+ @mixin column--xs() {
164
+ display: flex;
165
+
166
+ @include media-xs {
167
+ flex-direction: column;
168
+ }
169
+ }
170
+
171
+ @mixin column--sm() {
172
+ display: flex;
173
+
174
+ @include media-sm {
175
+ flex-direction: column;
176
+ }
177
+ }
178
+
179
+ @mixin column--md() {
180
+ display: flex;
181
+
182
+ @include media-md {
183
+ flex-direction: column;
184
+ }
185
+ }
186
+
187
+ @mixin column--lg() {
188
+ display: flex;
189
+
190
+ @include media-lg {
191
+ flex-direction: column;
192
+ }
193
+ }
194
+
195
+ @mixin column--xl() {
196
+ display: flex;
197
+
198
+ @include media-xl {
199
+ flex-direction: column;
200
+ }
201
+ }
202
+
203
+ @mixin column--xxl() {
204
+ display: flex;
205
+
206
+ @include media-xxl {
207
+ flex-direction: column;
208
+ }
209
+ }
210
+
211
+ @mixin gutter() {
212
+ padding: 10px;
213
+
214
+ @include media-sm {
215
+ padding: 20px;
216
+ }
217
+
218
+ @include media-lg {
219
+ padding: 30px;
220
+ }
221
+ }
222
+
223
+ @mixin gutter--compact() {
224
+ padding: 10px;
225
+
226
+ @include media-sm {
227
+ padding: 15px;
228
+ }
229
+
230
+ @include media-lg {
231
+ padding: 20px;
232
+ }
233
+ }
234
+
235
+ @mixin flex--centerXY() {
236
+ display: inline-flex;
237
+ justify-content: center;
238
+ align-items: center;
239
+ }
240
+
241
+ @mixin flex--centerX() {
242
+ display: inline-flex;
243
+ justify-content: center;
244
+ }
245
+
246
+ @mixin flex--centerY() {
247
+ display: inline-flex;
248
+ align-items: center;
249
+ }
250
+
251
+ @mixin object-fit--cover() {
252
+ object-fit: cover;
253
+ }
254
+
255
+ @mixin object-fit--contain() {
256
+ object-fit: contain;
257
+ }
258
+
259
+ @mixin object-position--center() {
260
+ object-position: center;
261
+ }
262
+
263
+ @mixin overflow--x {
264
+ overflow-x: auto;
265
+ overflow-y: hidden;
266
+ }
267
+
268
+ @mixin overflow--y {
269
+ overflow-x: hidden;
270
+ overflow-y: auto;
271
+ }
272
+
273
+ @mixin overflow--xy {
274
+ overflow: auto;
275
+ }
276
+
277
+ // UI
278
+
279
+ @mixin body {
280
+ font-family: var(--tide-booking-font-body);
281
+ font-size: var(--tide-booking-font-size-body);
282
+ line-height: var(--tide-booking-line-height-body);
283
+ color: var(--tide-booking-gray-dark);
284
+ -webkit-font-smoothing: antialiased;
285
+ -moz-osx-font-smoothing: grayscale;
286
+
287
+ @include media-lg {
288
+ font-size: var(--tide-booking-font-size-body-lg);
289
+ }
290
+
291
+ &.has-overlay,
292
+ &.has-itinerary-schedule-active {
293
+ overflow: hidden;
294
+ }
295
+ }
296
+
297
+ @mixin input {
298
+ min-height: var(--tide-booking-input-height);
299
+ padding: 0 15px;
300
+ border: var(--tide-booking-input-border);
301
+ border-radius: var(--tide-booking-input-border-radius);
302
+ font-family: var(--tide-booking-font-body);
303
+ //font-size: 1.6rem;
304
+ font-size: var(--tide-booking-font-size-body);
305
+ font-weight: 400;
306
+ outline: none;
307
+ color: var(--tide-booking-input-color);
308
+ background: var(--tide-booking-input-background);
309
+
310
+ @include media-lg {
311
+ font-size: var(--tide-booking-font-size-body-lg);
312
+ min-height: var(--tide-booking-input-height-lg);
313
+ }
314
+
315
+ &:hover {
316
+ border: var(--tide-booking-input-border-hover);
317
+ }
318
+
319
+ &:focus {
320
+ border: var(--tide-booking-input-border-focus);
321
+ }
322
+
323
+ &:hover,
324
+ &:focus,
325
+ &:focus-within,
326
+ &:active {
327
+ outline: none;
328
+ }
329
+ }
330
+
331
+ @mixin textarea {
332
+ min-height: 250px;
333
+ max-height: 60vh;
334
+ padding: 12px 15px;
335
+ font-family: var(--tide-booking-font-body);
336
+ //font-size: 1.6rem
337
+ font-size: var(--input-font-size--mobile);
338
+ border: var(--tide-booking-input-border);
339
+ border-radius: var(--tide-booking-input-border-radius);
340
+ color: var(--tide-booking-input-color);
341
+ background: var(--tide-booking-input-background);
342
+ resize: vertical;
343
+ outline: none;
344
+
345
+ @include media-xs {
346
+ //font-size: 1.8rem;
347
+ font-size: var(--input-font-size--desktop);
348
+ }
349
+
350
+ &:hover {
351
+ border: var(--tide-booking-input-border-hover);
352
+ }
353
+
354
+ &:focus {
355
+ border: var(--tide-booking-input-border-focus);
356
+ }
357
+
358
+ &:focus,
359
+ &:active {
360
+ border: var(--tide-booking-input-border-focus);
361
+ }
362
+ }
363
+
364
+ @mixin button {
365
+ cursor: pointer;
366
+ outline: none;
367
+
368
+ &:hover,
369
+ &:focus,
370
+ &:active {
371
+ outline: none;
372
+ }
373
+ }
374
+
375
+ @mixin strong {
376
+ font-weight: 400;
377
+ color: var(--tide-booking-black);
378
+ }
379
+
380
+ @mixin small {
381
+ font-size: var(--tide-booking-small-font-size--mobile);
382
+
383
+ @include media-xs {
384
+ font-size: var(--tide-booking-small-font-size--desktop);
385
+ }
386
+ }
387
+
388
+ @mixin border-radius {
389
+ border-radius: 5px;
390
+ }
391
+
392
+ @mixin lineclamp($lineclamp-amount: 1) {
393
+ display: block;
394
+ display: -webkit-box;
395
+ -webkit-line-clamp: $lineclamp-amount;
396
+ overflow: hidden;
397
+ text-overflow: ellipsis;
398
+ -webkit-box-orient: vertical;
399
+ /* autoprefixer: off */
400
+ }
401
+
402
+ @mixin placeholder {
403
+ font-style: var(--tide-booking-form-input-placeholder-font-style);
404
+ color: var(--tide-booking-form-input-placeholder-color);
405
+ }
406
+
407
+ @mixin hover-to-color {
408
+ &:hover {
409
+ color: var(--tide-booking-black);
410
+ }
411
+ }
412
+
413
+ @mixin focus-to-color {
414
+ &:focus,
415
+ &:active {
416
+ color: var(--tide-booking-black);
417
+ }
418
+ }
419
+
420
+ // TYPOGRAPHY
421
+ @mixin heading {
422
+ margin: 0;
423
+ display: inline-flex;
424
+ flex-flow: row wrap;
425
+ font-family: var(--tide-booking-font-heading);
426
+ font-weight: normal;
427
+ line-height: 1.35;
428
+ word-break: break-word;
429
+ color: var(--tide-booking-heading-color);
430
+
431
+ &:empty {
432
+ display: none;
433
+ }
434
+
435
+ em {
436
+ width: 100%;
437
+ font-family: var(--tide-booking-font-handwritten);
438
+ font-style: normal;
439
+ }
440
+ }
441
+
442
+ @mixin h1 {
443
+ font-size: var(--tide-booking-h1);
444
+
445
+ @include media-sm {
446
+ font-size: var(--tide-booking-h1-sm);
447
+ }
448
+
449
+ @include media-xl {
450
+ font-size: var(--tide-booking-h1-xl);
451
+ }
452
+ }
453
+
454
+ @mixin h2 {
455
+ font-size: var(--tide-booking-h2);
456
+
457
+ @include media-sm {
458
+ font-size: var(--tide-booking-h2-sm);
459
+ }
460
+
461
+ @include media-xl {
462
+ font-size: var(--tide-booking-h2-xl);
463
+ }
464
+ }
465
+
466
+ @mixin h3 {
467
+ font-size: var(--tide-booking-h3);
468
+
469
+ @include media-sm {
470
+ font-size: var(--tide-booking-h3-sm);
471
+ }
472
+
473
+ @include media-xl {
474
+ font-size: var(--tide-booking-h3-xl);
475
+ }
476
+ }
477
+
478
+ @mixin h4 {
479
+ font-size: var(--tide-booking-h4);
480
+
481
+ @include media-sm {
482
+ font-size: var(--tide-booking-h4-sm);
483
+ }
484
+
485
+ @include media-xl {
486
+ font-size: var(--tide-booking-h4-xl);
487
+ }
488
+ }
489
+
490
+ @mixin h5 {
491
+ font-size: var(--tide-booking-h5);
492
+
493
+ @include media-xl {
494
+ font-size: var(--tide-booking-h5-xl);
495
+ }
496
+ }
497
+
498
+ @mixin h6 {
499
+ font-size: var(--tide-booking-h6);
500
+
501
+ @include media-md {
502
+ font-size: var(--tide-booking-h6-md);
503
+ }
504
+ }
505
+
506
+ @mixin a {
507
+ color: var(--tide-booking-a-color);
508
+ cursor: pointer;
509
+ outline: none;
510
+ text-decoration: var(--tide-booking-a-text-decoration);
511
+ @extend %transition-easing;
512
+
513
+ &:hover,
514
+ &:focus,
515
+ &:active {
516
+ outline: none;
517
+ }
518
+
519
+ &:hover {
520
+ color: var(--tide-booking-a-color-hover);
521
+ text-decoration: var(--tide-booking-a-text-decoration-hover);
522
+ }
523
+
524
+ &:focus,
525
+ &:active {
526
+ color: var(--tide-booking-a-color-focus);
527
+ text-decoration: var(--tide-booking-a-text-decoration-focus);
528
+ }
529
+ }
530
+
531
+ // ANIMATIONS
532
+ @mixin transitionEasing($duration: 0.35s) {
533
+ transition-duration: $duration;
534
+ transition-property: width, height, transform, border, fill, color, background, box-shadow, opacity;
535
+ transition-timing-function: ease-out;
536
+ }
537
+
538
+ // INTERACTIONS
539
+ @mixin hoverToColor() {
540
+ &:hover {
541
+ opacity: 1;
542
+ outline: none;
543
+ fill: var(--tide-booking-color-primary);
544
+ color: var(--tide-booking-color-primary);
545
+ background-color: var(--tide-booking-transparent);
546
+ }
547
+ }
548
+
549
+ @mixin activeToColor() {
550
+ &:active {
551
+ opacity: 1;
552
+ outline: none;
553
+ fill: var(--tide-booking-color-primary-dark);
554
+ color: var(--tide-booking-color-primary-dark);
555
+ background-color: var(--tide-booking-transparent);
556
+ }
557
+ }
558
+
559
+ @mixin slideDown($duration: 0.35s) {
560
+ @keyframes in {
561
+ 0% {
562
+ transform: translate3D(0, -100%, 0);
563
+ }
564
+
565
+ 100% {
566
+ transform: translate3D(0, 0, 0);
567
+ }
568
+ }
569
+
570
+ @keyframes out {
571
+ 0% {
572
+ transform: translate3D(0, 0, 0);
573
+ }
574
+
575
+ 100% {
576
+ transform: translate3D(0, -100%, 0);
577
+ }
578
+ }
579
+ }