42 lines
1.0 KiB
Plaintext
42 lines
1.0 KiB
Plaintext
---
|
|
import Layout from "@layouts/Layout.astro";
|
|
import Main from "@layouts/Main.astro";
|
|
import Header from "@components/Header.astro";
|
|
import Footer from "@components/Footer.astro";
|
|
import Card from "@components/Card";
|
|
import Pagination from "@components/Pagination.astro";
|
|
import { SITE } from "@config";
|
|
import type { Page } from "astro";
|
|
import type { CollectionEntry } from "astro:content";
|
|
|
|
export interface Props {
|
|
page: Page<CollectionEntry<"blog">>;
|
|
tag: string;
|
|
tagName: string;
|
|
}
|
|
|
|
const { page, tag, tagName } = Astro.props;
|
|
---
|
|
|
|
<Layout title={`Tag: ${tagName} | ${SITE.title}`}>
|
|
<Header activeNav="tags" />
|
|
<Main
|
|
pageTitle={[`Tag:`, `${tagName}`]}
|
|
titleTransition={tag}
|
|
pageDesc={`All the articles with the tag "${tagName}".`}
|
|
>
|
|
<h1 slot="title" transition:name={tag}>{`Tag:${tag}`}</h1>
|
|
<ul>
|
|
{
|
|
page.data.map(({ data, slug }) => (
|
|
<Card href={`/posts/${slug}/`} frontmatter={data} />
|
|
))
|
|
}
|
|
</ul>
|
|
</Main>
|
|
|
|
<Pagination {page} />
|
|
|
|
<Footer noMarginTop={page.lastPage > 1} />
|
|
</Layout>
|