Skip to content

Commit f196429

Browse files
committed
polish
1 parent e077f1d commit f196429

File tree

3 files changed

+88
-68
lines changed

3 files changed

+88
-68
lines changed

website/src/pages/_meta.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,15 @@ export default {
2020
type: "menu",
2121
title: "Community",
2222
items: {
23-
index: { title: "Community Resources" },
24-
"upcoming-events": { title: "Events & Meetups" },
25-
contribute: { title: "Contribute to GraphQL" },
23+
index: {
24+
title: "Community Resources",
25+
href: "/community/resources/official-channels",
26+
},
27+
events: { title: "Events & Meetups" },
28+
contribute: {
29+
title: "Contribute to GraphQL",
30+
href: "/community/contribute/essential-links",
31+
},
2632
},
2733
theme: {
2834
breadcrumb: false,
@@ -84,6 +90,6 @@ export default {
8490
conf: {
8591
type: "page",
8692
title: "GraphQLConf",
87-
route: '/conf/2024',
93+
route: "/conf/2024",
8894
},
8995
}

website/src/pages/blog.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export default function Blog(props) {
8080
<h3 className="text-2xl font-bold">Categories</h3>
8181
{tagList}
8282
</div>
83-
<div className="container grid md:grid-cols-2 gap-7">
83+
<div className="container grid md:grid-cols-2 gap-7 pb-10">
8484
{blogList}
8585
</div>
8686
</>

website/src/pages/community/events.mdx

Lines changed: 77 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -13,66 +13,78 @@ import "leaflet/dist/leaflet.css"
1313
import pinkCircle from "./pink-circle.svg"
1414

1515
export function EventCard({ href, date, city, name, meta }) {
16-
return <a
16+
return (
17+
<a
1718
href={href}
1819
className={clsx(
1920
"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",
2223
)}
2324
target="_blank"
2425
rel="noreferrer"
2526
>
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">
3839
<b className="text-primary">{meta}</b>
3940
<div className="font-bold text-2xl">{name}</div>
4041
<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+
)}
4753
</div>
4854
</div>
4955
</a>
56+
)
5057
}
5158

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+
)
6272

6373
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+
)
7688
}
7789

7890
## Upcoming Events
@@ -89,34 +101,37 @@ export function Events({ events }) {
89101
export function Meetups() {
90102
useEffect(() => {
91103
// Load only on client
92-
import('leaflet').then(L => {
104+
import("leaflet").then(L => {
93105
// Fixes GET http://localhost:3000/community/upcoming-events/marker-icon-2x.png 404 (Not Found)
94106
// and replace default marker image
95107
L.Icon.Default.mergeOptions({
96108
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)
101113
for (const { node } of meetups) {
102114
L.marker([node.latitude, node.longitude])
103115
.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+
)
105119
}
106120
})
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+
)
120135
}
121136

122137
<Meetups />
@@ -186,7 +201,6 @@ const urls = meetups.filter(
186201
187202
export const EventsIntro = () => {
188203
const { events } = useData();
189-
190204
return <p>Join one of <strong>{events.length}</strong> recent or upcoming GraphQL events around the world!</p>
191205
}
192206

0 commit comments

Comments
 (0)