Skip to content

Commit ea6f547

Browse files
committed
feat: update event card to handle multi date event
1 parent b0fd5ff commit ea6f547

2 files changed

Lines changed: 27 additions & 22 deletions

File tree

app/(home)/components/EventCard.tsx

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,28 @@ import { cn } from '@/lib/utils';
33
import CountdownTimer from './CountdownTimer';
44
import Link from 'next/link';
55

6-
interface Event {
6+
export interface Event {
77
title: string;
8-
date: string;
8+
date: string | string[];
99
location: string;
1010
variant: 'main' | 'regular'; // "main" for the featured event, "regular" for other events
1111
link: string;
1212
}
1313

1414
export default function EventCard({ event }: { event: Event }) {
15+
const getDisplayDate = (date: string | string[]) => {
16+
if (Array.isArray(date)) {
17+
if (date.length === 0) return '';
18+
if (date.length === 1) return date[0];
19+
return `${date[0]} - ${date[date.length - 1]}`;
20+
}
21+
return date;
22+
};
23+
24+
const getFirstDateString = (date: string | string[]) => {
25+
return Array.isArray(date) ? (date[0] ?? '') : date;
26+
};
27+
1528
return (
1629
<div
1730
className={cn(
@@ -39,7 +52,7 @@ export default function EventCard({ event }: { event: Event }) {
3952
'text-xs lg:text-xl md:text-[17px] md:leading-tight'
4053
)}
4154
>
42-
{event.date} <br /> {event.location}
55+
{getDisplayDate(event.date)} <br /> {event.location}
4356
</p>
4457
{event.variant === 'main' && (
4558
<Button
@@ -61,7 +74,7 @@ export default function EventCard({ event }: { event: Event }) {
6174

6275
{event.variant === 'main' && (
6376
<div className="hidden xl:block mr-8">
64-
<CountdownTimer eventDate={new Date(event.date).toISOString()} />
77+
<CountdownTimer eventDate={getFirstDateString(event.date)} />
6578
</div>
6679
)}
6780
</div>

app/(home)/components/UpcomingEvents.tsx

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,17 @@ import { Container } from '@/components/ui/container';
22
import React from 'react';
33
import EventCard from './EventCard';
44
import CountdownTimer from './CountdownTimer';
5+
import { type Event } from './EventCard';
56
// import { Button } from '@/components/ui/button';
67
// import Link from 'next/link';
78

8-
interface Event {
9-
title: string;
10-
date: string;
11-
location: string;
12-
variant: 'main' | 'regular';
13-
link: string;
14-
}
15-
169
const EVENTS: Event[] = [
1710
{
1811
title: 'PyCon Davao 2025',
19-
date: 'October 25, 2025',
12+
date: ['October 25, 2025', 'October 26, 2025'],
2013
location: 'Ateneo de Davao University',
2114
variant: 'main',
22-
link: 'https://techtix.durianpy.org/pycon-davao-2025', // TODO: Update Link
23-
},
24-
{
25-
title: 'PyCon Davao Sprint Day',
26-
date: 'October 26, 2025',
27-
location: 'TBA',
28-
variant: 'regular',
29-
link: '', // TODO: Update Link
15+
link: 'https://techtix.durianpy.org/pycon-davao-2025',
3016
},
3117
];
3218

@@ -43,7 +29,13 @@ const UpcomingEvents = () => {
4329

4430
{/* Countdown Timer */}
4531
<div className="block lg:block xl:hidden">
46-
<CountdownTimer eventDate={new Date(EVENTS[0].date).toISOString()} />
32+
<CountdownTimer
33+
eventDate={
34+
Array.isArray(EVENTS[0].date)
35+
? (EVENTS[0].date[0] ?? '')
36+
: EVENTS[0].date
37+
}
38+
/>
4739
</div>
4840

4941
{/* Other events */}

0 commit comments

Comments
 (0)