/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import React from 'react'; import Link from '@docusaurus/Link'; import {translate} from '@docusaurus/Translate'; import {PageMetadata} from '@docusaurus/theme-common'; import Layout from '@theme/Layout'; import Heading from '@theme/Heading'; function Year({year, posts}) { return ( <> {year} ); } function YearsSection({years}) { return (
{years.map((_props, idx) => (
))}
); } function listPostsByYears(blogPosts) { const postsByYear = blogPosts.reduce((posts, post) => { const year = post.metadata.date.split('-')[0]; const yearPosts = posts.get(year) ?? []; return posts.set(year, [post, ...yearPosts]); }, new Map()); return Array.from(postsByYear, ([year, posts]) => ({ year, posts, })); } export default function BlogArchive({archive}) { const title = translate({ id: 'theme.blog.archive.title', message: 'Archive', description: 'The page & hero title of the blog archive page', }); const description = translate({ id: 'theme.blog.archive.description', message: 'Archive', description: 'The page & hero description of the blog archive page', }); const years = listPostsByYears(archive.blogPosts); return ( <>
{title}

{description}

{years.length > 0 && }
); }