feat(pages): 五页型落地——首页/文章双模板/图库 masonry/瞬间/关于

- 首页:名片+身份陈述空槽+按年分组分轨列表(情绪色/mono标签)+影像格+项目墙
- 文章 /archives/{slug}(与 Halo 旧 URL 1:1):reading→衬线纸墨 / tech→
  TOC 侧栏(≥1120 sticky)+2px 进度条+Artalk 容器占位
- 图库:grid masonry(构建期 aspect-ratio 零 JS)+原生 dialog lightbox
  (←→/Esc+EXIF 底栏)+分组筛选
- 瞬间时间线 / 关于(三轨版图+构建说明)
- sharp ^0.35.5 入依赖(Astro 7 不内置,astro:assets 缩略图管线前提)
- 裸 blockquote 默认吃 A 墨线样式(markdown 原生输出无类名的缝隙)
- 车道 30min 超时,产物完整,主会话补 sharp+断言脚本递归修正后收编

验证: pnpm astro build exit 0(7 页);五路由产物断言过;
      scripts/check-responsive.sh 11/11 ok(1120/820/760/560 全档)

Spec: 2026-10-24_add-blog-skeleton
Co-authored-by: GLM-5.3
This commit is contained in:
wait4xandGLM-5.3 committed 2026-10-25 00:11:34 +08:00
1 parent 80ff67e8fa
commit 945a9ee610
14 files changed
+1281 -18

No files matched your search

+42
View File
@@ -0,0 +1,42 @@
---
// 名片头像占位:内联 SVG 渐变 60px;真实头像接入后整体替换本组件即可
---
<svg
class="avatar"
viewBox="0 0 60 60"
width="60"
height="60"
role="img"
aria-label="头像占位"
>
<defs>
<linearGradient id="avatar-grad" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="var(--mood-3)"></stop>
<stop offset="1" stop-color="var(--accent)"></stop>
</linearGradient>
</defs>
<rect width="60" height="60" rx="14" fill="url(#avatar-grad)"></rect>
<circle cx="44" cy="15" r="10" fill="#fff" opacity=".25"></circle>
<path d="M0 46 20 28 34 40 46 32 60 46 60 60 0 60Z" fill="#000" opacity=".14"></path>
<text
x="30"
y="38"
text-anchor="middle"
font-size="16"
font-weight="700"
fill="#fff"
opacity=".92"
font-family="var(--font-mono)"
>
w4
</text>
</svg>
<style>
.avatar {
flex: none;
border-radius: 14px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}
</style>