承接所有 block 的默认卡面和重点卡面。
这里不只列 class name,而是说明这些原语在页面系统里各自承担什么职责
组件文档要回答三件事:这个 primitive 管什么、它和 token 的边界是什么、它在真实页面里怎么被 section 复用。
四组最关键的基础原语
这些原语已经足够支撑黑白 intro / hiring / docs 型站点。后面要扩,也优先沿着这四组扩。
保证黑白站的层级和信息节奏稳定。
按钮和导航保持统一的触感与状态切换。
用于主题切换、标签展示、状态筛选。
基础原语先在同一个皮肤里看清楚
先确认 surface、文字层级、动作和导航的基准触感,再谈不同站点的内容差异。
Panel + type scale
`site-copy` 和 `site-note` 不只控制字色,也控制阅读密度。黑白站一旦节奏乱了,再漂亮的版式也会很快散掉。
所有 primitive 都应该服务于信息密度,而不是为了“好看”各自长成一套独立审美。
block 级别组件直接复用真实 renderer
文档站不应手写一套“像 renderer 的假预览”。下面这些 live block 直接复用真实 section renderer。
当 block 出现在 docs 站和真实站时,应该是同一个 renderer 的产物,而不是两套视觉逻辑。
{
kind: 'spotlight',
id: 'next-step',
kicker: 'SPOTLIGHT',
title: 'Ready for the next action',
summary: 'CTA or principle block',
body: 'Keep the copy in data, not in renderer.',
actions: [{ label: 'Open', href: '/styles' }],
metrics: [{ label: 'Themes', value: '3' }]
}Metrics block
适合把几个强信号并排呈现。
Noir / Paper / Frame
Same layout, different documents
Subsite rewrite ready
Timeline block
适合经历、迭代过程、里程碑。
Theme
先把背景、边框、按钮、wash 这些视觉约束提成 token。
- 不要把品牌 copy 放进 theme
- 不要复制整套页面做明暗切换
Renderer
renderer 只关心 block 怎么排布,不关心页面的真实业务内容。
- section kind 扩展比复制 route 更优先
Spotlight block
适合章节中的 CTA、原则强调或一次性结论。
这是适合放在中后段的大块强调区。它介于 hero 和普通 section 之间,适合拿来承接转场或下一步动作。
能装正文、动作、指标
不必再单写一套特殊版式
写新组件时的判断顺序
先决定它是不是 section kind,再决定是否只是 existing block 的一个数据变体。
只有当结构真的不同,才扩 `section.kind`。只是 copy 变化,不要加新 kind。
只有当皮肤规律真的不同,才扩 theme token。不要为了某一页特殊感受复制全主题。
route 只是 document + renderer 的装配层。不要把业务文案堆回 route。
继续看 schema,才能知道什么时候该扩 renderer
component docs 只解决“长什么样”和“怎么复用”。要真正让系统稳定,还要回到 schema 看结构边界。