--- import { getCollection } from "astro:content"; import Card from "@components/Card"; import Footer from "@components/Footer.astro"; import Header from "@components/Header.astro"; import { SITE } from "@config"; import Layout from "@layouts/Layout.astro"; import Main from "@layouts/Main.astro"; import getPostsByGroupCondition from "@utils/getPostsByGroupCondition"; // Redirect to 404 page if `showArchives` config is false if (!SITE.showArchives) { return Astro.redirect("/404"); } const posts = await getCollection("blog", ({ data }) => !data.draft); const MonthMap: Record = { "1": "January", "2": "February", "3": "March", "4": "April", "5": "May", "6": "June", "7": "July", "8": "August", "9": "September", "10": "October", "11": "November", "12": "December", }; ---
{ Object.entries( getPostsByGroupCondition(posts, post => post.data.pubDatetime.getFullYear() ) ) .sort(([yearA], [yearB]) => Number(yearB) - Number(yearA)) .map(([year, yearGroup]) => (
{year} {yearGroup.length} {Object.entries( getPostsByGroupCondition( yearGroup, post => post.data.pubDatetime.getMonth() + 1 ) ) .sort(([monthA], [monthB]) => Number(monthB) - Number(monthA)) .map(([month, monthGroup]) => (
{MonthMap[month]} {monthGroup.length}
    {monthGroup.map(({ data, slug }) => ( ))}
))}
)) }