2024-12-26 15:02:43 +00:00
|
|
|
---
|
|
|
|
import { Icon } from "astro-icon/components";
|
|
|
|
|
|
|
|
import { type CollectionEntry, getCollection } from "astro:content";
|
|
|
|
|
|
|
|
type Props = {
|
|
|
|
entry: CollectionEntry<"posts"> | CollectionEntry<"projects">;
|
|
|
|
};
|
|
|
|
|
|
|
|
const { entry } = Astro.props;
|
|
|
|
const { collection } = entry;
|
|
|
|
|
|
|
|
const items = (await getCollection(collection))
|
|
|
|
.filter((post) => !post.data.draft)
|
|
|
|
.sort((a, b) => b.data.date.getTime() - a.data.date.getTime());
|
|
|
|
const index = items.findIndex((x) => x.slug === entry.slug);
|
|
|
|
const prev = items[(index - 1 + items.length) % items.length];
|
|
|
|
const next = items[(index + 1) % items.length];
|
|
|
|
---
|
|
|
|
|
2025-01-05 18:49:48 +00:00
|
|
|
{
|
|
|
|
items.length > 1 ? (
|
|
|
|
<div class="mx-auto mt-8 flex max-w-prose justify-between gap-4 md:gap-0">
|
|
|
|
<div class="group flex w-fit flex-row items-center justify-between gap-2">
|
|
|
|
<a
|
|
|
|
href={`/${prev.collection}/${prev.slug}`}
|
|
|
|
class="animate-reveal opacity-0"
|
|
|
|
>
|
|
|
|
<Icon
|
|
|
|
name="mdi:arrow-left"
|
|
|
|
title="All projects"
|
|
|
|
class="h-4 w-auto text-tertiary transition-colors duration-300 group-hover:text-accent"
|
|
|
|
/>
|
|
|
|
</a>
|
|
|
|
<a href={`/${prev.collection}/${prev.slug}`}>
|
|
|
|
<p class="animate-reveal break-words text-xl font-medium text-tertiary opacity-0 transition-colors duration-300 group-hover:text-accent">
|
|
|
|
{prev.data.title}
|
|
|
|
</p>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<div class="group flex w-fit flex-row items-center justify-between gap-2 self-end">
|
|
|
|
<a href={`/${next.collection}/${next.slug}`}>
|
|
|
|
<p class="animate-reveal break-words text-xl font-medium text-tertiary opacity-0 transition-colors duration-300 group-hover:text-accent">
|
|
|
|
{next.data.title}
|
|
|
|
</p>
|
|
|
|
</a>
|
|
|
|
<a
|
|
|
|
href={`/${next.collection}/${next.slug}`}
|
|
|
|
class="animate-reveal opacity-0"
|
|
|
|
>
|
|
|
|
<Icon
|
|
|
|
name="mdi:arrow-right"
|
|
|
|
title="All projects"
|
|
|
|
class="h-4 w-auto text-tertiary transition-colors duration-300 group-hover:text-accent"
|
|
|
|
/>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
) : null
|
|
|
|
}
|