1+ import { Header , EventCard } from '@/shared/components' ;
2+ import DateTag from '@/pages/events/components/DateTag' ;
3+ import { cn } from '@/shared/lib' ;
4+ import { eventData } from '@/shared/constants/events/eventsData' ;
5+ import Image from 'next/image' ;
6+ import { useRouter } from 'next/router' ;
7+
8+ const EventDetailPage = ( ) => {
9+ const router = useRouter ( ) ;
10+ const { id } = router . query ;
11+
12+ const event = eventData . find ( ( e ) => e . id === Number ( id ) ) ;
13+ if ( ! event ) return null ;
14+
15+ const { name, address, description, startDate, endDate, imageSrc } = event ;
16+
17+ return (
18+ < div
19+ className = { cn (
20+ 'relative w-full min-h-[100vh] overflow-auto' ,
21+ ) }
22+ >
23+ < Header
24+ title = '행사명'
25+ onClick = { ( ) => router . back ( ) }
26+ className = { cn ( 'fixed top-0 left-0 right-0 z-50' ) }
27+ />
28+
29+ < main
30+ className = { cn (
31+ 'flex flex-col items-center justify-start' ,
32+ 'px-[2.4rem] pt-[calc(10rem+1.4rem)]'
33+ ) }
34+ >
35+ { /* 행사 기간 */ }
36+ < div className = { cn ( 'flex justify-center w-[18.4rem] mt-[1.3rem]' ) } >
37+ < DateTag startDate = { startDate } endDate = { endDate } />
38+ </ div >
39+
40+ { /* 대표 이미지 */ }
41+ < section
42+ className = { cn (
43+ 'relative w-full flex justify-center max-w-[35.4rem]' ,
44+ 'mt-[1rem]'
45+ ) }
46+ >
47+ { imageSrc ? (
48+ < Image
49+ src = { imageSrc }
50+ alt = { `${ name } 이미지` }
51+ width = { 354 }
52+ height = { 430 }
53+ className = { cn ( 'w-full h-auto object-cover rounded-[2rem]' ) }
54+ />
55+ ) : (
56+ < div
57+ className = { cn ( 'w-full h-[43.6rem] bg-gray-200 rounded-[2rem]' ) }
58+ />
59+ ) }
60+ </ section >
61+
62+ { /* 행사 카드 */ }
63+ < div
64+ className = { cn (
65+ 'flex flex-col items-center w-full gap-[0.8rem]' ,
66+ 'mt-[0.8rem]'
67+ ) }
68+ >
69+ < EventCard
70+ name = { name }
71+ address = { address }
72+ description = { description }
73+ variant = 'gray'
74+ size = 'large'
75+ />
76+
77+ { /* 관련 행사 */ }
78+ < div
79+ className = { cn (
80+ 'grid grid-cols-2 gap-[1.2rem] justify-items-center w-full max-w-[35.4rem]'
81+ ) }
82+ >
83+ < div className = { cn ( 'w-[17rem]' ) } >
84+ < EventCard
85+ name = '관련 행사'
86+ address = ''
87+ description = ''
88+ variant = 'gray'
89+ size = 'small'
90+ />
91+ </ div >
92+ < div className = { cn ( 'w-[17rem]' ) } >
93+ < EventCard
94+ name = '관련 행사'
95+ address = ''
96+ description = ''
97+ variant = 'gray'
98+ size = 'small'
99+ />
100+ </ div >
101+ </ div >
102+ </ div >
103+ </ main >
104+ </ div >
105+ ) ;
106+ } ;
107+
108+ export default EventDetailPage ;
0 commit comments