|
|
|
@ -1,6 +1,7 @@ |
|
|
|
|
import { ParsedUrlQuery } from "querystring"; |
|
|
|
|
|
|
|
|
|
import { GetStaticProps } from "next"; |
|
|
|
|
import { MDXRemote } from "next-mdx-remote"; |
|
|
|
|
import React from "react"; |
|
|
|
|
|
|
|
|
|
import { ConnectWithUs } from "@/components/ConnectWithUs"; |
|
|
|
@ -11,15 +12,13 @@ import { Image } from "@/components/Image"; |
|
|
|
|
import { NewsCard } from "@/components/NewsCard"; |
|
|
|
|
import { SocialLinks } from "@/components/SocialLinks"; |
|
|
|
|
import { Event, getUpcomingEvents } from "@/lib/events"; |
|
|
|
|
|
|
|
|
|
import UnavailableContent, { |
|
|
|
|
metadata as unavailableMetadata, |
|
|
|
|
} from "../content/playground/unavailable.news.mdx"; |
|
|
|
|
import { News, getRecentNews } from "@/lib/news"; |
|
|
|
|
|
|
|
|
|
import styles from "./index.module.css"; |
|
|
|
|
|
|
|
|
|
interface Props { |
|
|
|
|
events: Event[]; |
|
|
|
|
news: News[]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export default function Home(props: Props) { |
|
|
|
@ -54,27 +53,29 @@ export default function Home(props: Props) { |
|
|
|
|
<h1 className={styles.cardsHeading}>Upcoming Events</h1> |
|
|
|
|
<p className={styles.cardsDescription}>See past events here</p> |
|
|
|
|
<hr className={styles.cardsDividingLine} /> |
|
|
|
|
{props.events.length == 0 ? ( |
|
|
|
|
<p> |
|
|
|
|
There are no upcoming events right now. Please check back later! |
|
|
|
|
</p> |
|
|
|
|
) : null} |
|
|
|
|
<div className={styles.eventCards}> |
|
|
|
|
{props.events.length > 0 ? ( |
|
|
|
|
props.events |
|
|
|
|
.slice(0, 2) |
|
|
|
|
.map((event) => ( |
|
|
|
|
<EventDescriptionCard |
|
|
|
|
{...event.metadata} |
|
|
|
|
date={new Date(event.metadata.date)} |
|
|
|
|
key={event.metadata.name + event.metadata.date.toString()} |
|
|
|
|
/> |
|
|
|
|
)) |
|
|
|
|
) : ( |
|
|
|
|
<p> |
|
|
|
|
There are no upcoming events right now. Please check back |
|
|
|
|
later! |
|
|
|
|
</p> |
|
|
|
|
)} |
|
|
|
|
{props.events.length > 2 ? ( |
|
|
|
|
<p>See more upcoming events here</p> |
|
|
|
|
) : null} |
|
|
|
|
{props.events.length > 0 |
|
|
|
|
? props.events |
|
|
|
|
.slice(0, 2) |
|
|
|
|
.map((event) => ( |
|
|
|
|
<EventDescriptionCard |
|
|
|
|
{...event.metadata} |
|
|
|
|
date={new Date(event.metadata.date)} |
|
|
|
|
key={ |
|
|
|
|
event.metadata.name + event.metadata.date.toString() |
|
|
|
|
} |
|
|
|
|
/> |
|
|
|
|
)) |
|
|
|
|
: null} |
|
|
|
|
</div> |
|
|
|
|
{props.events.length > 2 ? ( |
|
|
|
|
<p>See more upcoming events here</p> |
|
|
|
|
) : null} |
|
|
|
|
</section> |
|
|
|
|
<section className={styles.news} id="news"> |
|
|
|
|
<h1 className={styles.cardsHeading}>News</h1> |
|
|
|
@ -83,9 +84,16 @@ export default function Home(props: Props) { |
|
|
|
|
See past news here |
|
|
|
|
</p> |
|
|
|
|
<hr className={styles.cardsDividingLine} /> |
|
|
|
|
<NewsCard {...unavailableMetadata}> |
|
|
|
|
<UnavailableContent /> |
|
|
|
|
</NewsCard> |
|
|
|
|
{props.news.length > 0 ? ( |
|
|
|
|
<NewsCard |
|
|
|
|
{...props.news[0].metadata} |
|
|
|
|
date={new Date(props.news[0].metadata.date)} |
|
|
|
|
> |
|
|
|
|
<MDXRemote {...props.news[0].content} /> |
|
|
|
|
</NewsCard> |
|
|
|
|
) : ( |
|
|
|
|
<p>There is no news right now. Please check back later!</p> |
|
|
|
|
)} |
|
|
|
|
</section> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
@ -105,5 +113,6 @@ type Params = ParsedUrlQuery; |
|
|
|
|
|
|
|
|
|
export const getStaticProps: GetStaticProps<Props, Params> = async () => { |
|
|
|
|
const events = await getUpcomingEvents(); |
|
|
|
|
return { props: { events } }; |
|
|
|
|
const news = await getRecentNews(); |
|
|
|
|
return { props: { events, news } }; |
|
|
|
|
}; |
|
|
|
|