From 19617b8bad8be9db4e6cb2e5152fe4745ae4f81b Mon Sep 17 00:00:00 2001 From: Aditya Thakral Date: Tue, 10 Aug 2021 17:08:29 -0400 Subject: [PATCH 1/4] Add news archive page --- pages/news/archive.module.css | 12 +++++++++ pages/news/archive.tsx | 49 +++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 pages/news/archive.module.css create mode 100644 pages/news/archive.tsx diff --git a/pages/news/archive.module.css b/pages/news/archive.module.css new file mode 100644 index 00000000..a05f7b45 --- /dev/null +++ b/pages/news/archive.module.css @@ -0,0 +1,12 @@ +.page { + margin-bottom: calc(40rem / 16); +} + +.list { + list-style: none; + padding: 0; +} + +.list > li { + line-height: 3; +} diff --git a/pages/news/archive.tsx b/pages/news/archive.tsx new file mode 100644 index 00000000..0ae61722 --- /dev/null +++ b/pages/news/archive.tsx @@ -0,0 +1,49 @@ +import { getNewsTermsByYear, getNewsYears } from "lib/news"; +import { GetStaticProps } from "next"; +import React from "react"; + +import { Link } from "@/components/Link"; + +import styles from "./archive.module.css"; + +interface Props { + items: { + year: string; + terms: string[]; + }[]; +} + +export default function NewsArchive({ items }: Props) { + return ( +
+

News Archive

+ +
+ ); +} + +export const getStaticProps: GetStaticProps = async () => { + const years = (await getNewsYears()).reverse(); + const yearsWithTerms = await Promise.all( + years.map(async (year) => ({ + year, + terms: (await getNewsTermsByYear(year)).reverse(), + })) + ); + + return { props: { items: yearsWithTerms } }; +}; + +function capitalize(str: string) { + return str.slice(0, 1).toUpperCase() + str.slice(1); +} -- 2.39.2 From d7b2d9cf343b0c913fd228bf0a99dcb1c6d334e3 Mon Sep 17 00:00:00 2001 From: Aditya Thakral Date: Fri, 13 Aug 2021 04:23:32 -0400 Subject: [PATCH 2/4] Add fit prop to NewsCard --- components/NewsCard.module.css | 6 ++++++ components/NewsCard.tsx | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/components/NewsCard.module.css b/components/NewsCard.module.css index b2ff0b13..fd83dd67 100644 --- a/components/NewsCard.module.css +++ b/components/NewsCard.module.css @@ -5,6 +5,12 @@ border-radius: calc(20rem / 16); } +.fit.card { + max-width: unset; + padding: unset; + border-radius: unset; +} + .date { font-size: calc(18rem / 16); margin: 0; diff --git a/components/NewsCard.tsx b/components/NewsCard.tsx index 7b364fc7..16a31be3 100644 --- a/components/NewsCard.tsx +++ b/components/NewsCard.tsx @@ -6,15 +6,19 @@ interface NewsCardProps { date: Date; author: string; children: ReactNode; + fit?: boolean; } export const NewsCard: React.FC = ({ date, author, children, + fit = false, }) => { + const classes = fit ? [styles.card, styles.fit] : [styles.card]; + return ( -
+