This commit is contained in:
2026-06-26 20:36:55 -04:00
commit b43a0306d2
174 changed files with 25684 additions and 0 deletions
@@ -0,0 +1,49 @@
---
import { AdultFlag, FormattedDate, NewFlag } from "components";
import type { PostProps } from "content.config";
import { keyTypeNameMap } from "const";
import { type Post } from "types";
import { getPostUrl, isNew } from "utils";
import "./styles.css";
type DatePosition = "top" | "bottom";
export interface Props {
datePosition?: DatePosition;
includeCollection?: boolean;
includeDescription?: boolean;
item: Post;
}
const {
datePosition: pDatePosition,
includeCollection,
includeDescription,
item,
} = Astro.props as Props;
const { collection } = item;
const { adult, description, pubDate, title } = item.data as PostProps;
const showNewFlag = await isNew(item);
const url = getPostUrl(collection, item);
const datePosition: DatePosition = pDatePosition || "top";
---
<div class="link-to-post-container">
{
includeCollection && (
<span class="collection-name">{keyTypeNameMap[collection]}</span>
)
}
{datePosition === "top" && <FormattedDate date={pubDate} />}
<div class="link-to-post">
{showNewFlag && <NewFlag post={item} />}
<a href={url}>{title}</a>
{adult && <AdultFlag />}
</div>
{datePosition === "bottom" && <FormattedDate date={pubDate} />}
{
!!description && includeDescription && (
<p class="item-description">{description}</p>
)
}
</div>