import Link from "../../components/Link"; import Time from "../../components/Time"; import { getFrontMatter } from "../../lib/helpers/posts"; import { addMetadata } from "../../lib/helpers/metadata"; import * as config from "../../lib/config"; import type { ReactElement } from "react"; import type { Route } from "next"; import type { FrontMatter } from "../../lib/helpers/posts"; import styles from "./page.module.css"; export const metadata = addMetadata({ title: "Notes", description: `Recent posts by ${config.authorName}.`, alternates: { canonical: "/notes", }, }); const Page = async () => { // parse the year of each note and group them together const notes = await getFrontMatter(); const notesByYear: { [year: string]: FrontMatter[]; } = {}; notes.forEach((note) => { const year = new Date(note.date).getUTCFullYear(); (notesByYear[year] || (notesByYear[year] = [])).push(note); }); const sections: ReactElement[] = []; Object.entries(notesByYear).forEach(([year, posts]) => { sections.push(

{year}

); }); // grouped posts enter this component ordered chronologically -- we want reverse chronological const reversed = sections.reverse(); return reversed; }; export default Page;