--- import cx from 'classnames'; import { getCollection } from 'astro:content'; import { formatPosts, sortByDate } from '../utils'; import { dateToFormat, dateToISO, wordCount } from '../utils'; import GridLayout from '../layouts/GridLayout.astro'; import PageTitle from '../components/PageTitle.astro'; import Pagination from '../components/Pagination.astro'; import Picture from '../components/Picture.astro'; import { Banner, ListItem, OrderedList, Tag, TextLink } from '../components'; import { mapping } from '../mdx-components'; export async function getStaticPaths() { const journalEntries = await getCollection('journal'); const numberOfPages = journalEntries.length; const formattedJournalEntries = formatPosts(journalEntries, { sortOrder: 'asc' }); return formattedJournalEntries.map((entry, index) => ({ params: { slug: entry.slug }, props: { entry, next: index + 1 === numberOfPages ? { slug: null, data: null } : formattedJournalEntries[index + 1], prev: index === 0 ? {} : formattedJournalEntries[index - 1], }, })); } const { entry, prev, next } = Astro.props; const { Content, remarkPluginFrontmatter: { minutesRead }, } = await entry.render(); const seriesEntries = await getCollection('journal', ({ data }) => { return data.series === entry.data.series; }); seriesEntries.sort(sortByDate).reverse(); const title = entry.data.title; const description = '…'; --- {entry.data.title} { entry.data.cover && ( ) }
{ entry.data.series && ( {seriesEntries.map((item) => ( {entry.slug === item.slug ? ( <> {item.data.title} 📍 ) : ( {item.data.title} )} ))} ) } { entry.data.updated && (
Last Updated:
) }