@times-components/ts-components 1.146.2-be27d508c972211ad80599875cd69c63bf67d4b1.45 → 1.146.2-e5795a0ef59e2adb61ba52aeb7332fda4405cb7a.4

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