@@ -13,66 +13,78 @@ import "leaflet/dist/leaflet.css"
13
13
import pinkCircle from " ./pink-circle.svg"
14
14
15
15
export function EventCard({ href , date , city , name , meta }) {
16
- return <a
16
+ return (
17
+ <a
17
18
href = { href }
18
19
className = { clsx (
19
20
" text-current no-underline flex border border-neutral-300 dark:border-neutral-700 rounded-none" ,
20
- ' hover:!border-primary hover:shadow-2xl hover:shadow-primary/10 transition-colors *:transition-colors hover:relative group' ,
21
- " relative after:content-['_↗'] after:font-sans after:absolute after:right-4 after:top-4"
21
+ " hover:!border-primary hover:shadow-2xl hover:shadow-primary/10 transition-colors *:transition-colors hover:relative group" ,
22
+ " relative after:content-['_↗'] after:font-sans after:absolute after:right-4 after:top-4" ,
22
23
)}
23
24
target = " _blank"
24
25
rel = " noreferrer"
25
26
>
26
- { date && < div
27
- className = " px-12 py-9 flex flex-col items-center bg-zinc-100 dark:bg-zinc-800 group-hover:dark:bg-zinc-700 w-48"
28
- >
29
- <div className = " text-7xl font-bold " > { date . getDate () } </ div >
30
- < div className = " text-lg " > { date .toLocaleString (' en ' , {
31
- month: ' short' ,
32
- year: ' numeric'
33
- })} </ div >
34
- </div >}
35
- < div
36
- className = " bg-white dark:bg-neutral-900 group-hover:dark:bg-zinc-800 grow py-7 px-10 flex flex-col gap-4 "
37
- >
27
+ { date && (
28
+ < div className = " px-12 py-9 flex flex-col items-center bg-zinc-100 dark:bg-zinc-800 group-hover:dark:bg-zinc-700 w-48" >
29
+ < div className = " text-7xl font-bold " > { date . getDate () } </ div >
30
+ <div className = " text-lg " >
31
+ { date .toLocaleString (" en " , {
32
+ month: " short" ,
33
+ year: " numeric" ,
34
+ })}
35
+ </div >
36
+ </ div >
37
+ ) }
38
+ < div className = " bg-white dark:bg-neutral-900 group-hover:dark:bg-zinc-800 grow py-7 px-10 flex flex-col gap-4 " >
38
39
<b className = " text-primary" >{ meta } </b >
39
40
<div className = " font-bold text-2xl" >{ name } </div >
40
41
<div className = " text-lg flex items-center gap-2" >
41
- <LocationIcon className = " fill-primary h-5" />{ city }
42
- { date && <>
43
- <ClockIcon
44
- className = " ml-6 fill-primary h-5"
45
- />{ date .toLocaleString (' en' , { hour: ' numeric' , minute: ' numeric' })}
46
- </>}
42
+ <LocationIcon className = " fill-primary h-5" />
43
+ { city }
44
+ { date && (
45
+ <>
46
+ <ClockIcon className = " ml-6 fill-primary h-5" />
47
+ { date .toLocaleString (" en" , {
48
+ hour: " numeric" ,
49
+ minute: " numeric" ,
50
+ })}
51
+ </>
52
+ )}
47
53
</div >
48
54
</div >
49
55
</a >
56
+ )
50
57
}
51
58
52
- export const { pastEvents, upcomingEvents } = events .reduce ((acc , event ) => {
53
- const now = new Date ()
54
- const date = new Date (event .date )
55
- if (date < now ) {
56
- acc .pastEvents .push (event )
57
- } else {
58
- acc .upcomingEvents .push (event )
59
- }
60
- return acc
61
- }, { pastEvents: [], upcomingEvents: [] })
59
+ export const { pastEvents, upcomingEvents } = events .reduce (
60
+ (acc , event ) => {
61
+ const now = new Date ()
62
+ const date = new Date (event .date )
63
+ if (date < now ) {
64
+ acc .pastEvents .push (event )
65
+ } else {
66
+ acc .upcomingEvents .push (event )
67
+ }
68
+ return acc
69
+ },
70
+ { pastEvents: [], upcomingEvents: [] },
71
+ )
62
72
63
73
export function Events({ events }) {
64
- return <div className = " mt-6" >
65
- { events .map (event => (
66
- <EventCard
67
- key = { event .slug }
68
- href = { event .eventLink }
69
- date = { new Date (event .date )}
70
- meta = { event .host }
71
- name = { event .name }
72
- city = { event .location }
73
- />
74
- ))}
75
- </div >
74
+ return (
75
+ <div className = " mt-6" >
76
+ { events .map (event => (
77
+ <EventCard
78
+ key = { event .slug }
79
+ href = { event .eventLink }
80
+ date = { new Date (event .date )}
81
+ meta = { event .host }
82
+ name = { event .name }
83
+ city = { event .location }
84
+ />
85
+ ))}
86
+ </div >
87
+ )
76
88
}
77
89
78
90
## Upcoming Events
@@ -89,34 +101,37 @@ export function Events({ events }) {
89
101
export function Meetups() {
90
102
useEffect (() => {
91
103
// Load only on client
92
- import (' leaflet' ).then (L => {
104
+ import (" leaflet" ).then (L => {
93
105
// Fixes GET http://localhost:3000/community/upcoming-events/marker-icon-2x.png 404 (Not Found)
94
106
// and replace default marker image
95
107
L .Icon .Default .mergeOptions ({
96
108
iconRetinaUrl: pinkCircle .src ,
97
- shadowUrl: ' ' ,
98
- });
99
- const map = L .map (' map' ).setView ([45 , - 15 ], 2 );
100
- L .tileLayer (' https://tile.openstreetmap.org/{z}/{x}/{y}.png' ).addTo (map );
109
+ shadowUrl: " " ,
110
+ })
111
+ const map = L .map (" map" ).setView ([45 , - 15 ], 2 )
112
+ L .tileLayer (" https://tile.openstreetmap.org/{z}/{x}/{y}.png" ).addTo (map )
101
113
for (const { node } of meetups ) {
102
114
L .marker ([node .latitude , node .longitude ])
103
115
.addTo (map )
104
- .bindPopup (` <a href="${node .link }" target="_blank" rel="noreferrer" class="!text-primary">${node .name }</a> ` )
116
+ .bindPopup (
117
+ ` <a href="${node .link }" target="_blank" rel="noreferrer" class="!text-primary">${node .name }</a> ` ,
118
+ )
105
119
}
106
120
})
107
- }, []);
108
-
109
- return <>
110
- <div id = " map" className = " h-96 my-6" />
111
- { meetups .map (({ node }) => (
112
- <EventCard
113
- key = { node .id }
114
- href = { node .link }
115
- name = { node .name }
116
- city = { node .city }
117
- />
118
- ))}
119
- </>
121
+ }, [])
122
+ return (
123
+ <>
124
+ <div id = " map" className = " h-96 my-6" />
125
+ { meetups .map (({ node }) => (
126
+ <EventCard
127
+ key = { node .id }
128
+ href = { node .link }
129
+ name = { node .name }
130
+ city = { node .city }
131
+ />
132
+ ))}
133
+ </>
134
+ )
120
135
}
121
136
122
137
<Meetups />
@@ -186,7 +201,6 @@ const urls = meetups.filter(
186
201
187
202
export const EventsIntro = () => {
188
203
const { events } = useData();
189
-
190
204
return <p>Join one of <strong>{events.length}</strong> recent or upcoming GraphQL events around the world!</p>
191
205
}
192
206
0 commit comments