--- import type { CollectionEntry } from "astro:content"; import { getCollection } from "astro:content"; import Layout from "../../layouts/BaseLayout.astro"; import PostElement from "../../components/PostElement.astro"; const title = "Blog | Valentin Popov"; const description = "A collection of articles on software development, tech leadership and open-source experiments."; const posts = await getCollection("blog", ({ data }) => { return data.draft !== true; }); posts.sort((a, b) => b.data.pubDate.getTime() - a.data.pubDate.getTime()); const postsByYear = posts.reduce[]>>((acc, post) => { const year = post.data.pubDate.getFullYear().toString(); if (!acc[year]) { acc[year] = []; } acc[year].push(post); return acc; }, {}); const years = Object.keys(postsByYear).sort((a, b) => Number(b) - Number(a)); ---
{ years.map((year) => (
{year}
    {postsByYear[year].map((post) => ( ))}
)) }