@qite/tide-components 1.0.8 → 1.0.10

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