@times-components/ts-components 1.145.1-cfea81c4084e6f91221ea00fec9fc730d5b933cb.4 → 1.145.1-e871182934034874ea6a75e1e684090e5504df44.2

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