chore(spec): 归档 blog-5l——三任务收敛(预览一致性/排版提醒/瞬间置顶隐藏)

Spec: 2026-11-05_blog-5l-admin-preview-moments

Co-authored-by: GLM-5.3
This commit is contained in:
wait4xandGLM-5.3 committed 2026-11-05 10:03:34 +08:00
1 parent c5889f960b
commit b99e6e744b
17 files changed
+406 -17

No files matched your search

+24 -3
View File
@@ -16,9 +16,15 @@ const { locale = 'zh' } = Astro.props;
// 标题下说明:文字与样式都可后台改(白名单校验,非法值回落)
const note = await pageNote('moments', locale);
const moments = (await getCollection('moments')).sort(
(a, b) => b.data.pubDate.getTime() - a.data.pubDate.getTime(),
);
// 5l:可见性 = 真字段 hidden(瞬间无单条页面,隐藏即列表移除,与文章语义的差异见 docs/管理台.md);
// 排序 = 置顶优先 → 日期倒序(与 posts/books 同口径,支持多置顶)
const moments = (await getCollection('moments'))
.filter((m) => !m.data.hidden)
.sort(
(a, b) =>
Number(b.data.pinned ?? false) - Number(a.data.pinned ?? false) ||
b.data.pubDate.getTime() - a.data.pubDate.getTime(),
);
// 富文本预渲染(Phase 5h T2):text 走与页面文案同一条管线(markdown → 内容净化 →
// class 白名单 → 链接卡片),因此瞬间支持 **加粗**、<span class="c-blue font-kai">、列表与换行。
@@ -46,6 +52,9 @@ const iso = (d: Date) => d.toISOString();
{iso(m.data.pubDate).slice(0, 10)}
</time>
<div class="mom-card">
{m.data.pinned && (
<span class="pin" title={t('pinned_label', locale)}>{t('pinned_label', locale)}</span>
)}
{m.data.image && (
<figure
class:list={[
@@ -200,6 +209,18 @@ const iso = (d: Date) => d.toISOString();
color: var(--ink-4);
font-variant-numeric: tabular-nums;
}
/* 置顶徽标:视觉与 posts 的 .pin 对齐(灰阶小徽章,不染 accent) */
.pin {
display: inline-block;
margin-bottom: var(--space-2);
font-family: var(--font-mono);
font-size: 10.5px;
line-height: 1.5;
color: var(--ink-4);
border: 1px solid var(--line);
border-radius: 4px;
padding: 0 5px;
}
.mom-card {
border: 1px solid var(--line);
border-radius: 12px;