2024-12-23 21:18:55 +00:00
|
|
|
---
|
|
|
|
import { getCollection } from "astro:content";
|
2024-12-26 22:45:38 +00:00
|
|
|
import { PROJECTS, SITE } from "@consts";
|
|
|
|
import Layout from "@layouts/Layout.astro";
|
|
|
|
import ShowcaseProject from "@components/ShowcaseProject.astro";
|
2025-05-06 22:50:48 +01:00
|
|
|
import Link from "@components/Link.astro";
|
2024-12-23 21:18:55 +00:00
|
|
|
|
|
|
|
const projects = (await getCollection("projects"))
|
|
|
|
.filter((project) => !project.data.draft)
|
|
|
|
.sort((a, b) => b.data.date.valueOf() - a.data.date.valueOf());
|
|
|
|
---
|
|
|
|
|
2024-12-26 22:45:38 +00:00
|
|
|
<Layout title={SITE.TITLE} description={PROJECTS.DESCRIPTION}>
|
2025-02-13 18:55:50 +00:00
|
|
|
<h1 class="animate-reveal text-3xl font-semibold break-words opacity-0">
|
|
|
|
{PROJECTS.TITLE}
|
|
|
|
</h1>
|
|
|
|
<ol
|
|
|
|
class="animate-reveal grid grid-cols-1 gap-4 opacity-0 [animation-delay:0.1s] md:grid-cols-2"
|
|
|
|
>
|
|
|
|
{projects.map((article: any) => <ShowcaseProject collection={article} />)}
|
|
|
|
</ol>
|
2025-05-06 22:50:48 +01:00
|
|
|
<div class="flex justify-end">
|
|
|
|
<Link
|
|
|
|
href="/projects.xml"
|
|
|
|
class="text-tertiary hover:text-secondary text-xs transition-colors duration-300"
|
|
|
|
>View projects feed</Link
|
|
|
|
>
|
|
|
|
</div>
|
2024-12-26 22:45:38 +00:00
|
|
|
</Layout>
|