feat(about): 块式页面构建器——九类区块 + 三级回落零回归(5g T1/T2)
- schema:siteAbout 增 layout{showIdCard} + blocks(z.discriminatedUnion
九类:prose/tracks/cards/timeline/quote/figure/linklist/cta/divider,
图片字段走 Astro image());对未知块型用 z.union([knownUnion,
z.looseObject({type})]) 复合——已知块严格校验,未知块落宽松分支再由
访问器 WARN+丢弃(容错与严格校验的张力取舍)
- page-blocks.ts:enabled:false 过滤、未知 type WARN+skip、pickBi 回落
zh 并 WARN、上限(块≤24/单块文本≤4000,超限截断并 WARN)
- BlockRenderer 统一外壳 `<section class="blk" data-block={type}>`(E2E
抓手)+ 九个块组件(样式自 AboutPage 原 <style> 搬迁,只吃既有 token)
- AboutPage 三级回落:blocks → intro markdown → 内置默认;legacy
tracks/build 段整体挪入回退分支(文案逐字一致,零回归)
- 图标白名单 src/lib/icons.ts(12 键,未登记回退首字占位)
- 后台 about 单例四段结构(blocks/layout/intro/typography),块为
list+types+typeKey,每块带「显示」开关与中文标签
协调报备:车道修了一处跨车道插入事故(T3 把 typography 插进了 intro
的 widget 内导致字段错位),重写为四段正确结构;并发构建擦 dist 的
假失败改用「build→快照 dist→快照起服务跑 E2E」规避(37/37 稳定)
验证: 构建 48 页 exit 0;E2E 37/37(快照口径);九类块顺序与配置一致、
figure 走 /_astro/*.webp 管线、未知块与外链图被拦并 WARN、
终版 3 块零回归、en 同构、admin about 四段字段齐全
Spec: 2026-11-02_blog-5g-pages (T1/T2)
Co-authored-by: GLM-5.3
This commit is contained in:
1 parent
6096a9dafe
commit
2f7cbcf7bd
16 files changed
+1289
-72
No files matched your search
@@ -0,0 +1,38 @@
|
||||
---
|
||||
// figure 块:图片(Astro 图片管线,宽度自适应;caption 图注)
|
||||
import { Image } from 'astro:assets';
|
||||
import type { ResolvedBlock } from '../../lib/page-blocks';
|
||||
|
||||
interface Props {
|
||||
block: Extract<ResolvedBlock, { type: 'figure' }>;
|
||||
}
|
||||
const { block } = Astro.props;
|
||||
---
|
||||
|
||||
<figure class="fig">
|
||||
<Image
|
||||
src={block.image}
|
||||
alt={block.alt}
|
||||
widths={[480, 960]}
|
||||
sizes="(min-width: 820px) 640px, 92vw"
|
||||
loading="lazy"
|
||||
class="fig-img"
|
||||
/>
|
||||
{block.caption && <figcaption>{block.caption}</figcaption>}
|
||||
</figure>
|
||||
|
||||
<style>
|
||||
.fig { margin: var(--space-4) 0; }
|
||||
.fig-img {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
border-radius: 10px;
|
||||
border: 1px solid var(--line);
|
||||
}
|
||||
figcaption {
|
||||
margin-top: var(--space-1);
|
||||
font-size: 12.5px;
|
||||
color: var(--ink-4);
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
Reference in new issue
Block a user