@@ -142,6 +142,7 @@ const decideImage = (
142
142
if ( ! image && ! avatarUrl ) {
143
143
return null ;
144
144
}
145
+
145
146
if ( avatarUrl ) {
146
147
return (
147
148
< Avatar
@@ -152,6 +153,7 @@ const decideImage = (
152
153
/>
153
154
) ;
154
155
}
156
+
155
157
if ( mainMedia ?. type === 'Audio' && mainMedia . podcastImage ?. src ) {
156
158
return (
157
159
< >
@@ -161,15 +163,17 @@ const decideImage = (
161
163
alt = { mainMedia . podcastImage . altText }
162
164
loading = { imageLoading }
163
165
isCircular = { false }
164
- aspectRatio = { ' 1:1' }
166
+ aspectRatio = " 1:1"
165
167
/>
166
168
< div className = "image-overlay" > </ div >
167
169
</ >
168
170
) ;
169
171
}
172
+
170
173
if ( ! image ) {
171
174
return null ;
172
175
}
176
+
173
177
return (
174
178
< >
175
179
< CardPicture
@@ -178,13 +182,41 @@ const decideImage = (
178
182
alt = { image . altText }
179
183
loading = { imageLoading }
180
184
isCircular = { true }
185
+ aspectRatio = "1:1"
181
186
/>
182
187
{ /* This image overlay is styled when the CardLink is hovered */ }
183
188
< div className = "image-overlay circular" > </ div >
184
189
</ >
185
190
) ;
186
191
} ;
187
192
193
+ const MediaPill = ( { mainMedia } : { mainMedia : MainMedia } ) => (
194
+ < div css = { mediaIcon } >
195
+ { mainMedia . type === 'Video' && (
196
+ < Pill
197
+ content = { secondsToDuration ( mainMedia . duration ) }
198
+ icon = { < SvgMediaControlsPlay /> }
199
+ iconSize = "small"
200
+ />
201
+ ) }
202
+ { mainMedia . type === 'Audio' && (
203
+ < Pill
204
+ content = { mainMedia . duration }
205
+ icon = { < SvgMediaControlsPlay /> }
206
+ iconSize = "small"
207
+ />
208
+ ) }
209
+ { mainMedia . type === 'Gallery' && (
210
+ < Pill
211
+ prefix = "Gallery"
212
+ content = { mainMedia . count }
213
+ icon = { < SvgCamera /> }
214
+ iconSide = "right"
215
+ />
216
+ ) }
217
+ </ div >
218
+ ) ;
219
+
188
220
export const HighlightsCard = ( {
189
221
linkTo,
190
222
format,
@@ -201,32 +233,7 @@ export const HighlightsCard = ({
201
233
starRating,
202
234
} : HighlightsCardProps ) => {
203
235
const isMediaCard = isMedia ( format ) ;
204
- const MediaPill = ( ) => (
205
- < div css = { mediaIcon } >
206
- { mainMedia ?. type === 'Video' && (
207
- < Pill
208
- content = { secondsToDuration ( mainMedia . duration ) }
209
- icon = { < SvgMediaControlsPlay /> }
210
- iconSize = { 'small' }
211
- />
212
- ) }
213
- { mainMedia ?. type === 'Audio' && (
214
- < Pill
215
- content = { mainMedia . duration }
216
- icon = { < SvgMediaControlsPlay /> }
217
- iconSize = { 'small' }
218
- />
219
- ) }
220
- { mainMedia ?. type === 'Gallery' && (
221
- < Pill
222
- prefix = "Gallery"
223
- content = { mainMedia . count }
224
- icon = { < SvgCamera /> }
225
- iconSide = "right"
226
- />
227
- ) }
228
- </ div >
229
- ) ;
236
+
230
237
return (
231
238
< FormatBoundary format = { format } >
232
239
< div css = { [ gridContainer , hoverStyles ] } >
@@ -265,7 +272,9 @@ export const HighlightsCard = ({
265
272
</ div >
266
273
) : null }
267
274
268
- { ! ! mainMedia && isMediaCard && MediaPill ( ) }
275
+ { ! ! mainMedia && isMediaCard && (
276
+ < MediaPill mainMedia = { mainMedia } />
277
+ ) }
269
278
270
279
< div css = { [ imageArea , avatarUrl && avatarAlignmentStyles ] } >
271
280
{ decideImage (
0 commit comments