Files
blogflare/src/routes/series/[slug]/+page.svelte
T
seahi 8205d22c40
continuous-integration/drone/push Build is passing
refactor: 移除空状态文本中的冗余标点符号
2026-08-08 14:00:19 +08:00

85 lines
2.0 KiB
Svelte

<script lang="ts">
import { page } from '$app/stores';
import { resolve } from '$app/paths';
import type { PageData } from './$types';
let { data }: { data: PageData } = $props();
function formatDate(value: string) {
return new Date(value).toLocaleDateString();
}
</script>
<svelte:head>
<title>{data.series.name} - {$page.data.site?.title || 'BlogFlare'}</title>
</svelte:head>
<main id="pjax-container">
<div class="wrapper container narrow contents-wrap">
<article class="article-detail yue">
<div class="banner-title">
<h1 class="post-title">{data.series.name}</h1>
<span class="post-meta">{data.posts.length} 篇文章</span>
</div>
<ol class="series-posts">
{#each data.posts as post, index (post.id)}
<li>
<span class="series-order">{post.series_weight ?? index + 1}</span>
<a href={resolve('/posts/[slug]', { slug: post.slug })}>{post.title}</a>
<time>{formatDate(post.published_at)}</time>
</li>
{:else}
<li class="empty-state">这个系列还没有文章</li>
{/each}
</ol>
</article>
</div>
</main>
<style>
.series-posts {
list-style: none;
margin: 0;
padding: 0;
border-top: 2px solid var(--text-color);
}
.series-posts li {
display: grid;
grid-template-columns: 3rem 1fr auto;
gap: 1rem;
align-items: baseline;
padding: 1rem 0;
border-bottom: 1px dashed var(--border-color, rgba(0, 0, 0, 0.15));
}
.series-order {
font-family: monospace;
color: var(--text-muted);
text-align: center;
}
.series-posts a {
color: var(--text-color);
text-decoration: none;
font-size: 1.1rem;
}
.series-posts a:hover {
color: var(--accent-color, #419b38);
}
.series-posts time {
color: var(--text-muted);
font-size: 0.9rem;
}
.empty-state {
display: block !important;
text-align: center;
color: var(--text-muted);
}
@media (max-width: 640px) {
.series-posts li {
grid-template-columns: 2rem 1fr;
}
.series-posts time {
grid-column: 2;
}
}
</style>