feat: add category and finished

This commit is contained in:
KazooTTT
2024-07-26 00:32:10 +08:00
parent d99e484aa9
commit 26f0f634be
5 changed files with 28 additions and 3 deletions

View File

@ -2,6 +2,9 @@
import type { CollectionEntry } from 'astro:content'
import { Image } from 'astro:assets'
import FormattedDate from '../FormattedDate.astro'
import Card from '../Card.astro'
import { Icon } from 'astro-icon/components'
import Label from '../Label.astro'
interface Props {
content: CollectionEntry<'post'>
@ -32,11 +35,23 @@ const dateTimeOptions: Intl.DateTimeFormatOptions = {
)
}
{data.draft ? <span class='text-red-500'>(Draft)</span> : null}
<div class='flex flex-wrap items-center gap-x-3 gap-y-2'>
<p class='text-xs'>
<FormattedDate date={data.date} dateTimeOptions={dateTimeOptions} /> /{' '}
{remarkPluginFrontmatter.minutesRead}
</p>
<Label
title={data.category ?? '未分类'}
as='a'
href={`/categories/${data.category ?? '未分类'}/`}
>
<Icon name='category' slot='icon' />
</Label>
<Label title={data.finished ? '已完成' : '未完成'} as='a'>
<Icon name='progress' slot='icon' />
</Label>
</div>
<h1 class='mt-2 text-3xl font-medium sm:mb-1'>
{data.title}
@ -79,6 +94,14 @@ const dateTimeOptions: Intl.DateTimeFormatOptions = {
)
}
{
(data.description + '').trim().length > 0 && (
<Card heading='摘要由ai生成' altText='摘要' class='my-4 w-full'>
<div class='ml-4 text-muted-foreground'>{data.description}</div>
</Card>
)
}
<!-- {
data.date && (
<p class='mt-6 text-base'>

View File

@ -27,7 +27,7 @@ const postDate = post.data.date
</a>
{
withDesc && (
<p class='line-clamp-3 block text-sm italic text-muted-foreground'>
<p class='line-clamp-2 text-sm italic text-muted-foreground'>
{post.data.description}
</p>
)

1
src/icons/category.svg Normal file
View File

@ -0,0 +1 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M6.5 11L12 2l5.5 9zm11 11q-1.875 0-3.187-1.312T13 17.5t1.313-3.187T17.5 13t3.188 1.313T22 17.5t-1.312 3.188T17.5 22M3 21.5v-8h8v8z"/></svg>

After

Width:  |  Height:  |  Size: 251 B

1
src/icons/progress.svg Normal file
View File

@ -0,0 +1 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20.777a9 9 0 0 1-2.48-.969M14 3.223a9.003 9.003 0 0 1 0 17.554m-9.421-3.684a9 9 0 0 1-1.227-2.592M3.124 10.5c.16-.95.468-1.85.9-2.675l.169-.305m2.714-2.941A9 9 0 0 1 10 3.223"/></svg>

After

Width:  |  Height:  |  Size: 377 B

View File

@ -22,7 +22,7 @@ const articleDate = date?.toISOString()
const { headings } = await post.render()
---
<PageLayout meta={{ articleDate, description, ogImage: socialImage, title }}>
<PageLayout meta={{ articleDate, description: description ?? '', ogImage: socialImage, title }}>
<div class='w-full'>
<Button title='Back' href='/blog' style='button'>
<svg
@ -41,7 +41,7 @@ const { headings } = await post.render()
</Button>
<div class='mt-8 gap-x-10 lg:flex lg:items-start'>
{!!headings.length && <TOC headings={headings} />}
<article class='flex-grow break-words' data-pagefind-body>
<article class='flex-1 flex-grow break-words' data-pagefind-body>
<div id='blog-hero'><BlogHero content={post} /></div>
<div
class='prose prose-base prose-zinc mt-12 text-muted-foreground dark:prose-invert prose-headings:font-medium prose-headings:text-foreground prose-headings:before:absolute prose-headings:before:-ms-4 prose-th:before:content-none'