45 lines
1,019 B
Text
45 lines
1,019 B
Text
---
|
|
import { changeLanguage } from 'i18next';
|
|
import { getCollection } from 'astro:content';
|
|
import Layout from '@layouts/Layout.astro';
|
|
import Table from '@components/Table';
|
|
import { HeaderType, type Header } from '@components/Table/types';
|
|
|
|
changeLanguage('en');
|
|
|
|
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',
|
|
hasCustomCell: true,
|
|
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>
|