2
2
3
3
import { useEffect , useState } from "react"
4
4
5
- // import { Image } from "@/components/Image"
5
+ import { Image } from "@/components/Image"
6
+ import { ButtonLink } from "@/components/ui/buttons/Button"
6
7
import {
7
8
Carousel ,
8
9
type CarouselApi ,
@@ -219,8 +220,39 @@ const ReleaseCarousel = () => {
219
220
key = { release . releaseName }
220
221
className = "w-full pl-4"
221
222
>
222
- < div className = "flex w-full flex-col items-center justify-center bg-red-500" >
223
- < p > { release . releaseDate } </ p >
223
+ < div className = "flex w-full flex-col gap-6 lg:flex-row" >
224
+ < div className = "w-full rounded-2xl lg:max-w-[351px]" >
225
+ < Image
226
+ src = { release . image }
227
+ alt = { release . releaseName }
228
+ className = "h-[240px] rounded-2xl object-cover md:h-[266px] lg:h-[551px]"
229
+ />
230
+ </ div >
231
+ < div className = "flex flex-col gap-8" >
232
+ < div >
233
+ < h2 className = "text-4xl font-bold lg:text-6xl" >
234
+ { release . releaseName }
235
+ </ h2 >
236
+ < p className = "text-md" >
237
+ { formatReleaseDate ( release . releaseDate ) }
238
+ </ p >
239
+ </ div >
240
+
241
+ < div >
242
+ < p className = "mb-3 text-xl font-bold" >
243
+ Main features
244
+ </ p >
245
+ < div className = "flex flex-col gap-4" >
246
+ { release . content . map ( ( item ) => item ) }
247
+ </ div >
248
+ </ div >
249
+ < ButtonLink
250
+ href = { release . href }
251
+ className = "w-full lg:w-fit"
252
+ >
253
+ Learn more
254
+ </ ButtonLink >
255
+ </ div >
224
256
</ div >
225
257
</ CarouselItem >
226
258
) ) }
@@ -238,157 +270,3 @@ const ReleaseCarousel = () => {
238
270
}
239
271
240
272
export default ReleaseCarousel
241
-
242
- {
243
- /* <div className="gap-6 rounded-2xl bg-background-highlight p-6">
244
- <div className="items-center justify-between gap-2">
245
- <div className="flex lg:hidden">
246
- <PreviousButton />
247
- </div>
248
- <div className="flex flex-1">
249
- <SwiperContainer className="" ref={containerRef2}>
250
- <Swiper
251
- spaceBetween={0}
252
- ref={swiperRef2}
253
- initialSlide={activeSlide}
254
- centeredSlides={true}
255
- breakpoints={{
256
- 320: {
257
- slidesPerView: 1,
258
- },
259
- 768: {
260
- slidesPerView: 3,
261
- },
262
- }}
263
- >
264
- {releasesData.map((release, index) => {
265
- const releaseDate = new Date(release.releaseDate)
266
- const today = new Date()
267
- const twoMonthsFromNow = new Date()
268
- twoMonthsFromNow.setMonth(today.getMonth() + 2)
269
- const nextRelease =
270
- releaseDate > today && releaseDate <= twoMonthsFromNow
271
-
272
- return (
273
- <SwiperSlide
274
- key={release.releaseName}
275
- className="items-center justify-center text-center md:!w-1/3"
276
- >
277
- <div className="mb-3 h-6">
278
- {pastReleases[pastReleases.length - 1].releaseDate ===
279
- release.releaseDate && (
280
- <div className="m-auto w-fit rounded-lg bg-primary-low-contrast px-2 py-1">
281
- <p className="text-sm font-bold">In production</p>
282
- </div>
283
- )}
284
- {nextRelease && (
285
- <div className="m-auto w-fit rounded-lg bg-warning-light px-2 py-1">
286
- <p className="text-sm font-bold">Coming soon</p>
287
- </div>
288
- )}
289
- </div>
290
- <div className="flex w-full items-center justify-center text-center">
291
- <div
292
- className={cn(
293
- "flex h-1 flex-1",
294
- index !== 0
295
- ? nextRelease
296
- ? "bg-gradient-to-r from-primary to-primary-low-contrast"
297
- : release.releaseDate <
298
- new Date().toISOString().split("T")[0]
299
- ? "bg-primary"
300
- : "bg-primary-low-contrast"
301
- : "bg-transparent"
302
- )}
303
- />
304
- <div
305
- className={cn(
306
- "h-7 w-7 rounded-full",
307
- release.releaseDate <
308
- new Date().toISOString().split("T")[0]
309
- ? "bg-primary"
310
- : "bg-primary-low-contrast",
311
- nextRelease && "border-2 border-primary bg-background"
312
- )}
313
- />
314
- <div
315
- className={cn(
316
- "flex h-1 flex-1",
317
- index !== releasesData.length - 1
318
- ? index < findLatestReleaseIndex()
319
- ? "bg-primary"
320
- : "bg-primary-low-contrast"
321
- : "bg-transparent"
322
- )}
323
- />
324
- </div>
325
- <div className="flex flex-col items-center justify-center text-center">
326
- <p className="text-md font-bold">{release.releaseName}</p>
327
- <p className="font-mono text-sm text-body-medium">
328
- {formatReleaseDate(release.releaseDate)}
329
- </p>
330
- </div>
331
- </SwiperSlide>
332
- )
333
- }) }
334
- </Swiper>
335
- </SwiperContainer>
336
- </div>
337
- <div className="flex lg:hidden">
338
- <NextButton />
339
- </div>
340
- </div>
341
- <div className="flex max-w-full flex-row items-center justify-between gap-8">
342
- <div className="hidden lg:flex">
343
- <PreviousButton />
344
- </div>
345
- <SwiperContainer className="!w-full overflow-hidden" ref={containerRef}>
346
- <Swiper
347
- slidesPerView="auto"
348
- ref={swiperRef}
349
- onSlideChange={(swiper) => {
350
- setActiveSlide(swiper.activeIndex)
351
- }}
352
- initialSlide={activeSlide}
353
- >
354
- {releasesData.map((release) => (
355
- <SwiperSlide key={release.releaseName}>
356
- <div className="flex w-full flex-col gap-6 lg:flex-row">
357
- <div className="w-full rounded-2xl lg:max-w-[351px]">
358
- <Image
359
- src={release.image}
360
- alt={release.releaseName}
361
- className="h-[240px] rounded-2xl object-cover md:h-[266px] lg:h-[551px]"
362
- />
363
- </div>
364
- <div className="flex flex-col gap-8">
365
- <div>
366
- <h2 className="text-4xl font-bold lg:text-6xl">
367
- {release.releaseName}
368
- </h2>
369
- <p className="text-md">
370
- {formatReleaseDate(release.releaseDate)}
371
- </p>
372
- </div>
373
-
374
- <div>
375
- <p className="mb-3 text-xl font-bold">Main features</p>
376
- <div className="flex flex-col gap-4">
377
- {release.content.map((item) => item)}
378
- </div>
379
- </div>
380
- <ButtonLink href={release.href} className="w-full lg:w-fit">
381
- Learn more
382
- </ButtonLink>
383
- </div>
384
- </div>
385
- </SwiperSlide>
386
- ))}
387
- </Swiper>
388
- </SwiperContainer>
389
- <div className="hidden lg:flex">
390
- <NextButton />
391
- </div>
392
- </div>
393
- </div> */
394
- }
0 commit comments