@times-components/ts-components 1.145.1-7e7a12feaf05c514789e802bf49cadca92e6a2b9.10 → 1.145.1-840c3cbc6021aef0e28e52412d33f016c55bc0b4.1

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 (136) hide show
  1. package/dist/components/travel-mini-cta/index.d.ts +3 -0
  2. package/dist/components/travel-mini-cta/index.js +84 -0
  3. package/dist/components/travel-mini-cta/styles.d.ts +42 -0
  4. package/dist/components/travel-mini-cta/styles.js +273 -0
  5. package/dist/components/travel-mini-cta/travel-mini-cta.stories.d.ts +110 -0
  6. package/dist/components/travel-mini-cta/travel-mini-cta.stories.js +121 -0
  7. package/dist/components/travel-mini-cta/types.d.ts +10 -0
  8. package/dist/components/{trip-cards → travel-mini-cta}/types.js +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +2 -2
  11. package/dist/utils/applyDarkMode.d.ts +1 -0
  12. package/dist/utils/applyDarkMode.js +12 -0
  13. package/dist/utils/getMediaQuery.d.ts +11 -0
  14. package/dist/utils/getMediaQuery.js +19 -0
  15. package/dist/utils/index.d.ts +2 -0
  16. package/dist/utils/index.js +3 -0
  17. package/package.json +3 -3
  18. package/rnw.js +1 -1
  19. package/src/components/travel-mini-cta/index.tsx +161 -0
  20. package/src/components/travel-mini-cta/styles.ts +336 -0
  21. package/src/components/travel-mini-cta/travel-mini-cta.stories.tsx +157 -0
  22. package/src/components/travel-mini-cta/types.ts +10 -0
  23. package/src/index.ts +1 -2
  24. package/src/utils/applyDarkMode.ts +12 -0
  25. package/src/utils/getMediaQuery.ts +25 -0
  26. package/src/utils/index.ts +2 -0
  27. package/dist/components/carousel-component/CarouselComponent.stories.d.ts +0 -1
  28. package/dist/components/carousel-component/CarouselComponent.stories.js +0 -146
  29. package/dist/components/carousel-component/CarouselItem.d.ts +0 -3
  30. package/dist/components/carousel-component/CarouselItem.js +0 -11
  31. package/dist/components/carousel-component/DefaultNavigationArrow.d.ts +0 -8
  32. package/dist/components/carousel-component/DefaultNavigationArrow.js +0 -6
  33. package/dist/components/carousel-component/DefaultPageDot.d.ts +0 -8
  34. package/dist/components/carousel-component/DefaultPageDot.js +0 -4
  35. package/dist/components/carousel-component/__tests__/CarouselComponent.test.d.ts +0 -1
  36. package/dist/components/carousel-component/__tests__/CarouselComponent.test.js +0 -163
  37. package/dist/components/carousel-component/__tests__/CarouselItem.test.d.ts +0 -1
  38. package/dist/components/carousel-component/__tests__/CarouselItem.test.js +0 -80
  39. package/dist/components/carousel-component/__tests__/DefaultNavigationArrow.test.d.ts +0 -1
  40. package/dist/components/carousel-component/__tests__/DefaultNavigationArrow.test.js +0 -62
  41. package/dist/components/carousel-component/__tests__/DefaultPageDot.test.d.ts +0 -1
  42. package/dist/components/carousel-component/__tests__/DefaultPageDot.test.js +0 -68
  43. package/dist/components/carousel-component/hooks/__tests__/useCarousel.test.d.ts +0 -1
  44. package/dist/components/carousel-component/hooks/__tests__/useCarousel.test.js +0 -459
  45. package/dist/components/carousel-component/hooks/useCarousel.d.ts +0 -2
  46. package/dist/components/carousel-component/hooks/useCarousel.js +0 -175
  47. package/dist/components/carousel-component/index.d.ts +0 -4
  48. package/dist/components/carousel-component/index.js +0 -20
  49. package/dist/components/carousel-component/styles.d.ts +0 -27
  50. package/dist/components/carousel-component/styles.js +0 -169
  51. package/dist/components/carousel-component/types.d.ts +0 -53
  52. package/dist/components/carousel-component/types.js +0 -2
  53. package/dist/components/trip-cards/SkeletonCard.d.ts +0 -6
  54. package/dist/components/trip-cards/SkeletonCard.js +0 -21
  55. package/dist/components/trip-cards/TripCard.d.ts +0 -3
  56. package/dist/components/trip-cards/TripCard.js +0 -49
  57. package/dist/components/trip-cards/TripCards.stories.d.ts +0 -1
  58. package/dist/components/trip-cards/TripCards.stories.js +0 -189
  59. package/dist/components/trip-cards/TripCardsLayout.d.ts +0 -3
  60. package/dist/components/trip-cards/TripCardsLayout.js +0 -37
  61. package/dist/components/trip-cards/__tests__/SkeletonCard.test.d.ts +0 -1
  62. package/dist/components/trip-cards/__tests__/SkeletonCard.test.js +0 -139
  63. package/dist/components/trip-cards/__tests__/TripCard.test.d.ts +0 -1
  64. package/dist/components/trip-cards/__tests__/TripCard.test.js +0 -95
  65. package/dist/components/trip-cards/__tests__/TripCardsLayout.test.d.ts +0 -1
  66. package/dist/components/trip-cards/__tests__/TripCardsLayout.test.js +0 -277
  67. package/dist/components/trip-cards/__tests__/assets.test.d.ts +0 -1
  68. package/dist/components/trip-cards/__tests__/assets.test.js +0 -165
  69. package/dist/components/trip-cards/__tests__/helpers.test.d.ts +0 -1
  70. package/dist/components/trip-cards/__tests__/helpers.test.js +0 -216
  71. package/dist/components/trip-cards/__tests__/index.test.d.ts +0 -1
  72. package/dist/components/trip-cards/__tests__/index.test.js +0 -433
  73. package/dist/components/trip-cards/__tests__/mockData.test.d.ts +0 -1
  74. package/dist/components/trip-cards/__tests__/mockData.test.js +0 -57
  75. package/dist/components/trip-cards/__tests__/skeletonStyles.test.d.ts +0 -1
  76. package/dist/components/trip-cards/__tests__/skeletonStyles.test.js +0 -194
  77. package/dist/components/trip-cards/assets/BoatIcon.d.ts +0 -1
  78. package/dist/components/trip-cards/assets/BoatIcon.js +0 -4
  79. package/dist/components/trip-cards/assets/CalendarIcon.d.ts +0 -1
  80. package/dist/components/trip-cards/assets/CalendarIcon.js +0 -4
  81. package/dist/components/trip-cards/assets/ChevronRightIcon.d.ts +0 -1
  82. package/dist/components/trip-cards/assets/ChevronRightIcon.js +0 -4
  83. package/dist/components/trip-cards/assets/LocationIcon.d.ts +0 -1
  84. package/dist/components/trip-cards/assets/LocationIcon.js +0 -4
  85. package/dist/components/trip-cards/assets/MoonIcon.d.ts +0 -1
  86. package/dist/components/trip-cards/assets/MoonIcon.js +0 -4
  87. package/dist/components/trip-cards/assets/index.d.ts +0 -6
  88. package/dist/components/trip-cards/assets/index.js +0 -7
  89. package/dist/components/trip-cards/helpers.d.ts +0 -4
  90. package/dist/components/trip-cards/helpers.js +0 -115
  91. package/dist/components/trip-cards/index.d.ts +0 -4
  92. package/dist/components/trip-cards/index.js +0 -70
  93. package/dist/components/trip-cards/mockData.d.ts +0 -3
  94. package/dist/components/trip-cards/mockData.js +0 -317
  95. package/dist/components/trip-cards/skeletonStyles.d.ts +0 -9
  96. package/dist/components/trip-cards/skeletonStyles.js +0 -37
  97. package/dist/components/trip-cards/styles.d.ts +0 -38
  98. package/dist/components/trip-cards/styles.js +0 -401
  99. package/dist/components/trip-cards/types.d.ts +0 -119
  100. package/src/components/carousel-component/CarouselComponent.stories.tsx +0 -220
  101. package/src/components/carousel-component/CarouselItem.tsx +0 -25
  102. package/src/components/carousel-component/DefaultNavigationArrow.tsx +0 -37
  103. package/src/components/carousel-component/DefaultPageDot.tsx +0 -20
  104. package/src/components/carousel-component/__tests__/CarouselComponent.test.tsx +0 -259
  105. package/src/components/carousel-component/__tests__/CarouselItem.test.tsx +0 -140
  106. package/src/components/carousel-component/__tests__/DefaultNavigationArrow.test.tsx +0 -153
  107. package/src/components/carousel-component/__tests__/DefaultPageDot.test.tsx +0 -105
  108. package/src/components/carousel-component/hooks/__tests__/useCarousel.test.ts +0 -625
  109. package/src/components/carousel-component/hooks/useCarousel.ts +0 -231
  110. package/src/components/carousel-component/index.tsx +0 -92
  111. package/src/components/carousel-component/styles.ts +0 -185
  112. package/src/components/carousel-component/types.ts +0 -62
  113. package/src/components/trip-cards/SkeletonCard.tsx +0 -62
  114. package/src/components/trip-cards/TripCard.tsx +0 -143
  115. package/src/components/trip-cards/TripCards.stories.tsx +0 -254
  116. package/src/components/trip-cards/TripCardsLayout.tsx +0 -108
  117. package/src/components/trip-cards/__tests__/SkeletonCard.test.tsx +0 -169
  118. package/src/components/trip-cards/__tests__/TripCard.test.tsx +0 -120
  119. package/src/components/trip-cards/__tests__/TripCardsLayout.test.tsx +0 -532
  120. package/src/components/trip-cards/__tests__/assets.test.tsx +0 -206
  121. package/src/components/trip-cards/__tests__/helpers.test.ts +0 -266
  122. package/src/components/trip-cards/__tests__/index.test.tsx +0 -495
  123. package/src/components/trip-cards/__tests__/mockData.test.ts +0 -67
  124. package/src/components/trip-cards/__tests__/skeletonStyles.test.tsx +0 -256
  125. package/src/components/trip-cards/assets/BoatIcon.tsx +0 -17
  126. package/src/components/trip-cards/assets/CalendarIcon.tsx +0 -17
  127. package/src/components/trip-cards/assets/ChevronRightIcon.tsx +0 -20
  128. package/src/components/trip-cards/assets/LocationIcon.tsx +0 -17
  129. package/src/components/trip-cards/assets/MoonIcon.tsx +0 -17
  130. package/src/components/trip-cards/assets/index.ts +0 -7
  131. package/src/components/trip-cards/helpers.ts +0 -150
  132. package/src/components/trip-cards/index.tsx +0 -119
  133. package/src/components/trip-cards/mockData.ts +0 -345
  134. package/src/components/trip-cards/skeletonStyles.ts +0 -46
  135. package/src/components/trip-cards/styles.ts +0 -446
  136. package/src/components/trip-cards/types.ts +0 -128
@@ -1,446 +0,0 @@
1
- import styled from 'styled-components';
2
- import {
3
- ContainerProps,
4
- CurrentPriceProps,
5
- ImageContainerProps
6
- } from './types';
7
-
8
- const breakpoints = {
9
- sm: '390px',
10
- md: '768px',
11
- lg: '1024px',
12
- xl: '1320px'
13
- };
14
-
15
- const colors = {
16
- primary: '#005C8A', // interactivePrimary030
17
- titleBlue: '#145683', // Title color
18
- ink: '#333333', // inkBase
19
- inkBrand: '#01000D', // inkBrand010 - active dot
20
- secondary: '#696969', // Secondary text
21
- border: '#E4E4E4', // Card border
22
- offerBg: '#FFEECF', // Offer label background
23
- offerBorder: '#FFB329', // Offer label left border
24
- strikethrough: '#9F0000', // Slashed price color
25
- dotActive: '#01000D', // inkBrand010
26
- dotInactive: '#AAAAAA', // inkNonEssential
27
- iconBlue: '#236FA3', // Data point icons
28
- white: '#FFFFFF'
29
- };
30
-
31
- export const Container = styled.div<ContainerProps>`
32
- max-width: var(
33
- --wp--style--global--content-size,
34
- ${props => props.mobile || '100%'}
35
- );
36
- margin: 0 auto;
37
- padding: 80px 0 40px;
38
-
39
- @media (min-width: ${breakpoints.md}) {
40
- max-width: var(
41
- --wp--style--global--content-size,
42
- ${props => props.tablet || '100%'}
43
- );
44
- }
45
-
46
- @media (min-width: ${breakpoints.lg}) {
47
- max-width: var(
48
- --wp--style--global--content-size,
49
- ${props => props.desktop || '100%'}
50
- );
51
- }
52
-
53
- @media (min-width: ${breakpoints.xl}) {
54
- max-width: var(
55
- --wp--style--global--content-size,
56
- ${props => props.xl || '100%'}
57
- );
58
- }
59
-
60
- @media (max-width: ${breakpoints.md}) {
61
- padding: 40px 0 0 10px;
62
- }
63
- `;
64
-
65
- export const TitleSection = styled.div`
66
- padding: 0;
67
- margin-bottom: 16px;
68
- `;
69
-
70
- export const TitleBar = styled.div`
71
- display: flex;
72
- flex-direction: row;
73
- align-items: center;
74
- gap: 12px;
75
- border-top: 1px dashed ${colors.border};
76
- border-bottom: 1px dashed ${colors.border};
77
- padding: 20px 0px;
78
-
79
- @media (max-width: ${breakpoints.md}) {
80
- justify-content: space-between;
81
- }
82
- `;
83
-
84
- export const TitleContent = styled.div`
85
- display: flex;
86
- flex-direction: row;
87
- flex-wrap: wrap;
88
- align-items: baseline;
89
- gap: 8px;
90
- `;
91
-
92
- export const Title = styled.h2`
93
- font-family: 'Times Modern', serif;
94
- font-size: 24px;
95
- font-weight: 800;
96
- line-height: 1.13;
97
- color: #145683;
98
- margin: 0;
99
- `;
100
-
101
- export const Subtitle = styled.p`
102
- font-family: 'Times Modern', serif;
103
- font-size: 20px;
104
- font-weight: 400;
105
- line-height: 1.13;
106
- color: #333333;
107
- margin: 0;
108
- vertical-align: bottom;
109
- `;
110
-
111
- export const TitleLink = styled.a`
112
- display: inline-flex;
113
- align-items: center;
114
- justify-content: center;
115
- width: 32px;
116
- height: 32px;
117
- padding: 8px;
118
- background: #eeeeee;
119
- border-radius: 33.33px;
120
- text-decoration: none;
121
- transition: background-color 0.2s ease;
122
- flex-shrink: 0;
123
-
124
- &:hover {
125
- background: #dddddd;
126
- }
127
-
128
- svg {
129
- width: 16px;
130
- height: 16px;
131
- color: ${colors.ink};
132
- }
133
- `;
134
-
135
- export const Description = styled.p`
136
- font-family: 'Roboto', sans-serif;
137
- font-size: 16px;
138
- line-height: 1.5;
139
- color: ${colors.secondary};
140
- margin: 0 0 20px 0;
141
- `;
142
-
143
- export const StaticCardsGrid = styled.div<{
144
- $minWidthMobile?: string;
145
- $minWidthTablet?: string;
146
- $minWidthDesktop?: string;
147
- $minWidthXl?: string;
148
- }>`
149
- display: flex;
150
- gap: 20px;
151
- padding: 0;
152
- flex-wrap: nowrap;
153
- overflow-x: auto;
154
- scroll-snap-type: x mandatory;
155
- scrollbar-width: none;
156
- -ms-overflow-style: none;
157
- scroll-behavior: smooth;
158
- align-items: stretch;
159
-
160
- &::-webkit-scrollbar {
161
- display: none;
162
- }
163
-
164
- > * {
165
- flex: 0 0 ${props => props.$minWidthMobile || '90%'};
166
- min-width: ${props => props.$minWidthMobile || '280px'};
167
- scroll-snap-align: start;
168
- display: flex;
169
- flex-direction: column;
170
- }
171
-
172
- @media (min-width: ${breakpoints.md}) {
173
- overflow-x: visible;
174
-
175
- > * {
176
- flex: 1 1 0;
177
- min-width: 0;
178
- max-width: calc(50% - 10px);
179
- }
180
- }
181
-
182
- @media (min-width: ${breakpoints.lg}) {
183
- > * {
184
- flex: 1 1 0;
185
- min-width: 0;
186
- max-width: ${props => props.$minWidthDesktop || 'calc(50% - 10px)'};
187
- }
188
- }
189
-
190
- @media (min-width: ${breakpoints.xl}) {
191
- > * {
192
- flex: 1 1 0;
193
- min-width: 0;
194
- max-width: ${props => props.$minWidthXl || 'calc(50% - 10px)'};
195
- }
196
- }
197
- `;
198
-
199
- // Card Styles
200
- export const CardContainer = styled.div`
201
- flex: 1;
202
- border: 1.2px solid ${colors.border};
203
- background: ${colors.white};
204
- overflow: hidden;
205
- display: flex;
206
- flex-direction: column;
207
- `;
208
-
209
- export const ImageContainer = styled.div<ImageContainerProps>`
210
- position: relative;
211
- width: auto;
212
- aspect-ratio: 3 / 2;
213
- height: ${({ isStaticGrid, $heightXs }) =>
214
- !isStaticGrid && $heightXs ? $heightXs : '100%'};
215
- overflow: hidden;
216
- flex-shrink: 0;
217
-
218
- ${({ isStaticGrid, $heightSm, $heightMd, $heightLg, $heightXl }) =>
219
- !isStaticGrid &&
220
- `
221
-
222
- @media (min-width: ${breakpoints.sm}) {
223
- ${$heightSm && `height: ${$heightSm};`}
224
- }
225
-
226
- @media (min-width: ${breakpoints.md}) {
227
- ${$heightMd && `height: ${$heightMd};`}
228
- }
229
-
230
- @media (min-width: ${breakpoints.lg}) {
231
- ${$heightLg && `height: ${$heightLg};`}
232
- }
233
-
234
- @media (min-width: ${breakpoints.xl}) {
235
- ${$heightXl && `height: ${$heightXl};`}
236
- }
237
- `};
238
- `;
239
-
240
- export const CardImage = styled.img`
241
- position: absolute;
242
- top: 0;
243
- left: 0;
244
- width: 100%;
245
- height: 100%;
246
- object-fit: cover;
247
- object-position: center;
248
- `;
249
-
250
- export const OfferLabel = styled.div`
251
- position: absolute;
252
- bottom: 12px;
253
- left: 0;
254
- background: ${colors.offerBg};
255
- border-left: 1.2px solid ${colors.offerBorder};
256
- padding: 12px 16px;
257
- font-family: 'Roboto', sans-serif;
258
- font-size: 14px;
259
- font-weight: 400;
260
- line-height: 1.5;
261
- color: ${colors.ink};
262
- `;
263
-
264
- export const GiftBanner = styled.div`
265
- position: absolute;
266
- bottom: 12px;
267
- left: 0;
268
- max-width: 80%;
269
- background: ${colors.offerBg};
270
- padding: 12px 16px;
271
- font-family: 'Roboto', sans-serif;
272
- font-size: 14px;
273
- font-weight: 400;
274
- line-height: 1.5;
275
- color: ${colors.ink};
276
- text-align: left;
277
- `;
278
-
279
- export const CardContent = styled.div`
280
- display: flex;
281
- flex-direction: column;
282
- flex: 1;
283
- padding: 20px 16px 16px 16px;
284
- gap: 32px;
285
- `;
286
-
287
- export const TopContainer = styled.div`
288
- display: flex;
289
- flex-direction: column;
290
- gap: 16px;
291
- flex: 1;
292
- `;
293
-
294
- export const BottomContainer = styled.div`
295
- display: flex;
296
- flex-direction: column;
297
- gap: 16px;
298
- `;
299
-
300
- export const Headline = styled.h3`
301
- font-family: 'Times Modern', serif;
302
- font-size: 20px;
303
- font-weight: 700;
304
- line-height: 1.125;
305
- color: ${colors.ink};
306
- margin: 0;
307
- `;
308
-
309
- export const DataPointsList = styled.div`
310
- display: flex;
311
- flex-direction: column;
312
- gap: 2px;
313
- `;
314
-
315
- export const DataPoint = styled.div`
316
- display: flex;
317
- align-items: center;
318
- gap: 8px;
319
- font-family: 'Roboto', sans-serif;
320
- font-size: 14px;
321
- line-height: 1.5;
322
- color: ${colors.secondary};
323
- min-height: 21px;
324
- `;
325
-
326
- export const DataIcon = styled.span`
327
- width: 17px;
328
- height: 17px;
329
- display: flex;
330
- align-items: center;
331
- justify-content: center;
332
- flex-shrink: 0;
333
- color: ${colors.iconBlue};
334
- font-size: 17px;
335
- `;
336
-
337
- export const PriceSection = styled.div`
338
- display: flex;
339
- flex-direction: row;
340
- align-items: center;
341
- gap: 12px;
342
- `;
343
-
344
- export const PriceContainer = styled.div`
345
- display: flex;
346
- flex-direction: column;
347
- gap: 12px;
348
- flex: 1;
349
- `;
350
-
351
- export const OfferContainer = styled.div`
352
- display: flex;
353
- align-items: center;
354
- gap: 4px;
355
- `;
356
-
357
- export const PriceLabel = styled.span`
358
- font-family: 'Roboto', sans-serif;
359
- font-size: 14px;
360
- line-height: 1.5;
361
- color: ${colors.secondary};
362
- `;
363
-
364
- export const OriginalPrice = styled.span`
365
- font-family: 'Roboto', sans-serif;
366
- font-size: 14px;
367
- font-weight: 500;
368
- line-height: 1.5;
369
- color: ${colors.strikethrough};
370
- text-decoration: line-through;
371
- `;
372
-
373
- export const CurrentPrice = styled.span<CurrentPriceProps>`
374
- font-family: 'Times Modern', serif;
375
- font-size: ${props => (props.$isEnquire ? '24px' : '32px')};
376
- font-weight: 300;
377
- line-height: 1.125;
378
- color: ${colors.ink};
379
- `;
380
-
381
- export const PriceSuffix = styled.span`
382
- font-family: 'Times Modern', serif;
383
- font-size: 24px;
384
- font-weight: 300;
385
- line-height: 1.125;
386
- color: ${colors.ink};
387
- `;
388
-
389
- export const LogoContainer = styled.div`
390
- width: 88px;
391
- height: 44px;
392
- display: flex;
393
- align-items: center;
394
-
395
- a {
396
- display: flex;
397
- align-items: center;
398
- width: 100%;
399
- height: 100%;
400
- }
401
-
402
- img {
403
- max-width: 100%;
404
- max-height: 100%;
405
- object-fit: contain;
406
- }
407
- `;
408
-
409
- export const CTAButton = styled.a`
410
- display: flex;
411
- align-items: center;
412
- justify-content: center;
413
- width: 100%;
414
- padding: 12px 16px;
415
- background: ${colors.primary};
416
- color: ${colors.white};
417
- font-family: 'Roboto', sans-serif;
418
- font-size: 16px;
419
- font-weight: 500;
420
- line-height: 1.5;
421
- text-decoration: none;
422
- transition: background 0.2s ease;
423
-
424
- &:hover {
425
- background: #004a6e;
426
- }
427
- `;
428
-
429
- // Navigation Arrow - positioned on sides of carousel
430
- export const LoadingContainer = styled.div`
431
- display: flex;
432
- justify-content: center;
433
- align-items: center;
434
- min-height: 400px;
435
- font-family: 'Roboto', sans-serif;
436
- color: ${colors.secondary};
437
- `;
438
-
439
- export const ErrorContainer = styled.div`
440
- display: flex;
441
- justify-content: center;
442
- align-items: center;
443
- min-height: 200px;
444
- font-family: 'Roboto', sans-serif;
445
- color: ${colors.strikethrough};
446
- `;
@@ -1,128 +0,0 @@
1
- import { ComponentType } from 'react';
2
-
3
- export interface ResponsiveConfig {
4
- xs?: string;
5
- mobile?: string;
6
- tablet?: string;
7
- desktop?: string;
8
- xl?: string;
9
- }
10
-
11
- export type ResponsiveConfigNoXs = Omit<ResponsiveConfig, 'xs'>;
12
-
13
- export interface ImageHeightConfig {
14
- $heightXs?: string;
15
- $heightSm?: string;
16
- $heightMd?: string;
17
- $heightLg?: string;
18
- $heightXl?: string;
19
- isStaticGrid?: boolean;
20
- }
21
-
22
- export interface TripCardsElement {
23
- class?: string;
24
- tripcards: string;
25
- title?: string;
26
- titleurl?: string;
27
- description?: string;
28
- }
29
-
30
- export interface TripCardsProps {
31
- element: TripCardsElement;
32
- useMockData?: boolean;
33
- widthContainerConfig?: ResponsiveConfig;
34
- widthItemConfig?: ResponsiveConfig;
35
- maxWidthItemConfig?: ResponsiveConfigNoXs;
36
- imgHeight?: ImageHeightConfig;
37
- forceStaticGrid?: boolean;
38
- }
39
-
40
- export interface DecodedTripCard {
41
- cruise_id: string;
42
- }
43
-
44
- export interface TripCardApiData {
45
- cruise_id: string;
46
- image: string;
47
- offer_label?: string;
48
- gift_banner?: string;
49
- headline: string;
50
- date: string;
51
- duration: string;
52
- route: string;
53
- ship: string;
54
- original_price?: string;
55
- price: string;
56
- logo: string;
57
- logo_url: string;
58
- cta_url: string;
59
- cta_text: string;
60
- }
61
-
62
- export interface TripCardProps {
63
- card: TripCardApiData;
64
- isStaticGrid?: boolean;
65
- imgHeight?: Omit<ImageHeightConfig, '$heightXs'>;
66
- }
67
-
68
- export interface ApiCruiseResult {
69
- post_id: number;
70
- cruise_id: number;
71
- cruise_title: string;
72
- cruise_line: {
73
- name: string;
74
- link: string;
75
- logo: string;
76
- };
77
- ship: {
78
- name: string;
79
- link: string;
80
- image: string;
81
- };
82
- departs: string;
83
- ends: string;
84
- date_label: string;
85
- destination: string[];
86
- duration: number;
87
- itinerary: string[];
88
- prices: {
89
- cheapest_price: number | string;
90
- inside: string | number;
91
- outside: string | number;
92
- balcony: string | number;
93
- suite: string | number;
94
- };
95
- was_prices: {
96
- inside: number;
97
- outside: number;
98
- balcony: number;
99
- suite: number;
100
- };
101
- link: string;
102
- campaigns: string[];
103
- extras: {
104
- date: string;
105
- duration: string;
106
- destination: string;
107
- info: string;
108
- };
109
- }
110
- export interface TripCardsLayoutProps {
111
- element: TripCardsElement;
112
- items: Array<{ id: string | number; data?: TripCardApiData }>;
113
- CardComponent: ComponentType<any>;
114
- itemsPerPage: number;
115
- widthContainerConfig?: ResponsiveConfig;
116
- widthItemConfig?: ResponsiveConfig;
117
- maxWidthItemConfig?: ResponsiveConfigNoXs;
118
- imgHeight?: Omit<ImageHeightConfig, '$heightXs'>;
119
- forceStaticGrid?: boolean;
120
- }
121
-
122
- export type ImageContainerProps = ImageHeightConfig;
123
-
124
- export type ContainerProps = Partial<ResponsiveConfig>;
125
-
126
- export interface CurrentPriceProps {
127
- $isEnquire?: boolean;
128
- }