@qite/tide-components 1.0.10 → 1.0.12

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