Add basic pages for blog entries

This commit is contained in:
Alexander Navarro 2023-11-11 18:48:50 -03:00
parent a9d4e94580
commit 8ca3b129dc
6 changed files with 97 additions and 2 deletions

View file

@ -0,0 +1,43 @@
---
import { getCollection } from 'astro:content';
import Layout from '@layouts/Layout.astro';
import Table from '@components/Table';
import { HeaderType, type Header } from '@components/Table/types';
const rawEntries = await getCollection('blog', ({ data }) => {
return import.meta.env.PROD ? data.draft !== true : true;
});
const entries = rawEntries.map((item, idx) => ({
...item.data,
id: idx + 1,
slug: item.slug,
}));
const headers: Header[] = [
{
key: 'id',
header: 'index',
type: HeaderType.Index,
},
{
key: 'title',
header: 'Title',
formatter: (data) => `<a href="blog/${data.slug}">${data.title}</a>`,
type: HeaderType.String,
},
{
key: 'tags',
header: 'Tags',
type: HeaderType.Multiple,
},
];
---
<Layout title="List of blog entries">
<h1>Blog's entries</h1>
<section>
<Table client:load data={entries} headers={headers} />
</section>
</Layout>