blob: 3d6662453d99bab7abd7764740a2e9224ff5f3b3 [file] [log] [blame]
---
import BaseHead from '../components/BaseHead.astro';
import Footer from '../components/Footer.astro';
import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';
import { getCollection } from 'astro:content';
import FormattedDate from '../components/FormattedDate.astro';
const posts = await getCollection('post')
const pinnedPosts = posts.filter(p => p.data.pinned);
const otherPosts = posts.filter(p => !(p.data.pinned || false))
---
<!doctype html>
<html lang="en">
<head>
<BaseHead title={SITE_TITLE} description={SITE_DESCRIPTION} />
</head>
<body class="bg-mantle min-h-screen flex flex-col items-center">
<div class="flex justify-center w-full flex-col gap-2 md:min-w-[768px] px-4 md:max-w-screen-lg">
<nav class="bg-mantle flex justify-center py-2 h-12">
<div class="flex flex-col items-center group">
<a href="/" class="text-text cursor-pointer hover:bg-surface0 rounded px-4 transition-colors">
Home
</a>
<div class="bg-text h-[2px] w-8 -mt-1 rounded-full group-hover:w-10 transition-all" />
</div>
</nav>
<main class="w-full bg-mantle mt-6 min-h-[84vh]">
<section id="posts">
<div class="flex flex-wrap gap-4 justify-center mb-10">
{
pinnedPosts.length > 0 ? pinnedPosts.map((post) => (
<a href={`/post/${post.slug}/`} class="
h-32 text-base bg-base p-4 rounded-2xl flex flex-col flex-grow border border-blue
hover:bg-surface0 hover:-translate-y-2 transition-all">
<h4 class="text-text w-full text-ellipsis">{post.data.title}</h4>
<div class="text-subtext0 flex">
<p title="Pinned">📌&ThinSpace;</p>
<FormattedDate date={post.data.pubDate} />
</div>
</a>
)) : null
}
</div>
<div class="flex flex-wrap gap-4 justify-center">
{
otherPosts.length > 0 ? otherPosts.map((post, idx) => (
<a href={`/post/${post.slug}/`} class="
h-32 text-base bg-base p-4 rounded-2xl flex flex-col flex-grow
first:text-center first:text-xl first:border-yellow first:border first:box-border
first:max-md:text-left first:max-md:w-full
hover:bg-surface0 hover:-translate-y-2 transition-all
max-md:w-full">
<h4 class="text-text w-full text-ellipsis">{post.data.title}</h4>
<div class="text-subtext0 flex">
{ idx === 0 ? <p title="Latest">✨&ThinSpace;</p> : null }
<FormattedDate date={post.data.pubDate} />
</div>
</a>
)) : null
}
</div>
<div class="flex justify-center h-40">
{
posts.length === 0 ?
<div class="border border-dashed border-surface0 rounded-xl flex justify-center items-center w-1/2">
No Posts Yet
</div> :
null
}
</div>
</section>
</main>
</div>
<Footer />
</body>
</html>