Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 2x 6x 1x 2x 5x 13x 1x 5x 6x | import React from "react";
import { Link, withPrefix } from "gatsby";
import * as style from "./index.module.scss";
import ReactGA from "react-ga4";
import dayjs from "dayjs";
import { AllPost } from "../entity";
const yearLink = ({ year }: { year: string }) => (
<Link
to={withPrefix(`/${year}/`)}
title={`Articles written in ${year}`}
onClick={() =>
ReactGA.event({ category: "Archive", action: `push Archive ${year}` })
}
>
{year}
</Link>
);
const Archive = ({ allPosts }: { allPosts: AllPost[] }) => {
const yearList = Array.from(
new Set(
allPosts.map((data) => dayjs(data.node.frontmatter.date).format("YYYY"))
)
).sort((a, b) => (a < b ? 1 : -1));
return (
<div className={style.archive} data-testid="Archive">
<p>
<span className="icon-calendar" />
Archives
</p>
{yearList.map((year) => yearLink({ year }))}
</div>
);
};
export default Archive;
|