2022-12-27 20:58:47 +05:30
|
|
|
<script lang="ts">
|
|
|
|
import dayjs from "dayjs";
|
|
|
|
import Hero from "$lib/Hero.svelte";
|
|
|
|
import LinkButton from "$lib/LinkButton.svelte";
|
|
|
|
import type { PageData } from "./$types";
|
|
|
|
export let data: PageData;
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<svelte:head>
|
2022-12-30 22:32:49 +05:30
|
|
|
<title>Blog | Project Segfault</title>
|
2022-12-27 20:58:47 +05:30
|
|
|
<meta
|
|
|
|
name="description"
|
2022-12-30 22:32:49 +05:30
|
|
|
content="Project Segfault's blog"
|
2022-12-27 20:58:47 +05:30
|
|
|
/>
|
|
|
|
</svelte:head>
|
|
|
|
|
|
|
|
<Hero marginTop="4">
|
|
|
|
<h1 class="text-5xl font-800">
|
|
|
|
<span class="text-accent">Project Segfault</span> blog
|
|
|
|
</h1>
|
|
|
|
<div
|
|
|
|
class="flex flex-col sm:flex-row justify-center items-center gap-4 m-4"
|
|
|
|
>
|
|
|
|
<LinkButton
|
|
|
|
url="/blog/tags"
|
|
|
|
title="Tags"
|
|
|
|
icon="i-fa6-solid:tags"
|
|
|
|
/>
|
|
|
|
<LinkButton
|
|
|
|
url="/blog/authors"
|
|
|
|
title="Authors"
|
|
|
|
icon="i-fa6-solid:user"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</Hero>
|
|
|
|
|
|
|
|
<div class="flex flex-col gap-10 mt-16">
|
|
|
|
{#each data.posts as post}
|
|
|
|
<div class="flex flex-col gap-4 bg-secondary p-4 rounded-2">
|
|
|
|
<span class="text-xl font-bold">{post.title}</span>
|
|
|
|
<div class="flex flex-col md:(flex-row gap-4) gap-2">
|
|
|
|
{#if post.tags.length > 0}
|
|
|
|
<div class="flex flex-row items-center gap-2">
|
|
|
|
<div class="i-fa6-solid:tags" />
|
|
|
|
{#each post.tags as tag}
|
2023-01-01 04:51:53 +05:30
|
|
|
<a href="/blog/tags/{tag.slug}" class="no-underline">{tag.name}</a>
|
2022-12-27 20:58:47 +05:30
|
|
|
{/each}
|
|
|
|
</div>
|
|
|
|
{/if}
|
2023-01-01 04:51:53 +05:30
|
|
|
{#each post.authors as author}
|
|
|
|
<a href="/blog/authors/{author.slug}" class="flex items-center gap-2 no-underline"><div class="i-fa6-solid:user" />{author.name}</a>
|
|
|
|
{/each}
|
2022-12-27 20:58:47 +05:30
|
|
|
<span class="flex items-center gap-2"><div class="i-fa6-solid:calendar" /> {dayjs
|
2023-01-01 04:51:53 +05:30
|
|
|
(post.published_at)
|
2022-12-27 20:58:47 +05:30
|
|
|
.format("ddd, DD MMM YYYY HH:mm")}</span>
|
2023-01-01 04:51:53 +05:30
|
|
|
<span class="flex items-center gap-2"><div class="i-fa6-solid:pencil" /> {post.plaintext.trim().split(/\s+/).length} words</span>
|
|
|
|
<span class="flex items-center gap-2"><div class="i-fa6-solid:book-open-reader" /> {post.reading_time} minute read</span>
|
2022-12-27 20:58:47 +05:30
|
|
|
</div>
|
2023-01-01 04:51:53 +05:30
|
|
|
<span>{post.plaintext.split(" ").slice(0, 20).join(" ") + "..."}</span>
|
|
|
|
<a href="/blog/{post.slug}">Read more...</a>
|
2022-12-27 20:58:47 +05:30
|
|
|
</div>
|
|
|
|
{/each}
|
|
|
|
</div>
|