@qite/tide-components 1.0.13-preview.0 → 1.0.14

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 +1664 -2414
  2. package/build/build-cjs/src/booking-wizard/features/booking/selectors.d.ts +1 -1
  3. package/build/build-cjs/src/booking-wizard/features/travelers-form/validate-form.d.ts +2 -2
  4. package/build/build-cjs/src/booking-wizard/types.d.ts +3 -23
  5. package/build/build-cjs/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +0 -2
  6. package/build/build-cjs/src/search-results/components/itinerary/index.d.ts +0 -1
  7. package/build/build-cjs/src/search-results/components/itinerary/itinerary-utils.d.ts +0 -1
  8. package/build/build-cjs/src/search-results/types.d.ts +0 -8
  9. package/build/build-cjs/src/search-results/utils/traject-utils.d.ts +0 -7
  10. package/build/build-cjs/src/shared/booking/travelers-form.d.ts +8 -13
  11. package/build/build-esm/index.js +1666 -2416
  12. package/build/build-esm/src/booking-wizard/features/booking/selectors.d.ts +1 -1
  13. package/build/build-esm/src/booking-wizard/features/travelers-form/validate-form.d.ts +2 -2
  14. package/build/build-esm/src/booking-wizard/types.d.ts +3 -23
  15. package/build/build-esm/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +0 -2
  16. package/build/build-esm/src/search-results/components/itinerary/index.d.ts +0 -1
  17. package/build/build-esm/src/search-results/components/itinerary/itinerary-utils.d.ts +0 -1
  18. package/build/build-esm/src/search-results/types.d.ts +0 -8
  19. package/build/build-esm/src/search-results/utils/traject-utils.d.ts +0 -7
  20. package/build/build-esm/src/shared/booking/travelers-form.d.ts +8 -13
  21. package/package.json +2 -2
  22. package/styles/abstracts/_mixins.scss +74 -74
  23. package/styles/abstracts/_variables.scss +57 -57
  24. package/styles/base/_fonts.scss +2 -2
  25. package/styles/base/_normalize.scss +227 -227
  26. package/styles/base/_typography.scss +35 -35
  27. package/styles/booking-joker-variables.scss +596 -596
  28. package/styles/booking-product-variables.scss +330 -330
  29. package/styles/booking-product.scss +438 -438
  30. package/styles/booking-qsm-variables.scss +501 -501
  31. package/styles/booking-qsm.scss +52 -52
  32. package/styles/booking-search-results-variables.scss +734 -734
  33. package/styles/booking-search-results.scss +53 -53
  34. package/styles/booking-wizard-variables.scss +603 -603
  35. package/styles/booking-wizard.scss +61 -61
  36. package/styles/components/_accordion.scss +67 -67
  37. package/styles/components/_animations.scss +39 -39
  38. package/styles/components/_base.scss +107 -107
  39. package/styles/components/_booking.scss +906 -906
  40. package/styles/components/_breadcrumb.scss +92 -92
  41. package/styles/components/_button.scss +238 -238
  42. package/styles/components/_checkbox.scss +230 -230
  43. package/styles/components/_contact.scss +255 -255
  44. package/styles/components/_content.scss +336 -336
  45. package/styles/components/_cta.scss +238 -238
  46. package/styles/components/_date-list.scss +41 -41
  47. package/styles/components/_date-range-picker.scss +223 -223
  48. package/styles/components/_decrement-increment.scss +35 -35
  49. package/styles/components/_dropdown.scss +77 -77
  50. package/styles/components/_error.scss +50 -50
  51. package/styles/components/_faq.scss +30 -30
  52. package/styles/components/_flight-option.scss +1444 -1432
  53. package/styles/components/_flyin.scss +830 -830
  54. package/styles/components/_footer.scss +135 -135
  55. package/styles/components/_form.scss +1704 -1704
  56. package/styles/components/_gallery.scss +317 -317
  57. package/styles/components/_header.scss +113 -113
  58. package/styles/components/_image-with-text.scss +206 -206
  59. package/styles/components/_img-slider.scss +175 -175
  60. package/styles/components/_info-message.scss +75 -75
  61. package/styles/components/_input.scss +35 -35
  62. package/styles/components/_list.scss +185 -185
  63. package/styles/components/_loader.scss +152 -152
  64. package/styles/components/_login.scss +140 -140
  65. package/styles/components/_map-view.scss +1100 -1100
  66. package/styles/components/_mixins.scss +579 -579
  67. package/styles/components/_navbar.scss +765 -765
  68. package/styles/components/_passenger-picker.scss +306 -306
  69. package/styles/components/_phone-input.scss +8 -8
  70. package/styles/components/_placeholders.scss +165 -165
  71. package/styles/components/_pricing-summary.scss +163 -163
  72. package/styles/components/_qsm.scss +17 -17
  73. package/styles/components/_radiobutton.scss +170 -170
  74. package/styles/components/_search.scss +2197 -2197
  75. package/styles/components/_select-wrapper.scss +81 -81
  76. package/styles/components/_slider.scss +120 -120
  77. package/styles/components/_spinner.scss +29 -29
  78. package/styles/components/_step-indicators.scss +187 -187
  79. package/styles/components/_table.scss +81 -81
  80. package/styles/components/_tide-form.scss +578 -578
  81. package/styles/components/_tree.scss +648 -648
  82. package/styles/components/_typeahead.scss +275 -275
  83. package/styles/components/_variables.scss +89 -89
  84. package/styles/content-blocks-variables.scss +543 -543
  85. package/styles/content-blocks.scss +66 -66
  86. package/styles/font.scss +2 -2
  87. package/styles/qsm/_calendar.scss +274 -274
  88. package/styles/qsm/_qsm.scss +1097 -1097
  89. package/styles/search.scss +1200 -1200
  90. package/styles/tide-form-variables.scss +275 -275
  91. package/styles/tide-form.scss +56 -56
  92. package/build/build-cjs/src/search-results/utils/booked-entry-utils.d.ts +0 -20
  93. package/build/build-esm/src/search-results/utils/booked-entry-utils.d.ts +0 -20
@@ -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
+ }