Part of #3965(其词表终态 A/B 决策挂 needs-user-decision,本单是 PR #3998 测量确认任何终态下都成立的部分,提前拆出)。
范围(测量出处:PR #3998 正文的判定表,基 0cbdca888)
189 个 div 节点中 106 个的 className 字面写着一等公民布局组件的能力,JSON 手写 Tailwind 复刻 props 本就是反模式,转换是纯赚:
| 类别 |
节点数 |
目标 |
className 含 flex(不含 flex-col) |
84 |
flex + align/justify/gap props |
className 含 space-y-* |
9 |
stack + gap |
className 含 max-w-* |
8 |
container + maxWidth/padding(注意默认 padding 4,需显式 padding: 0 保等价) |
className 含 grid/grid-cols-* |
5 |
grid + columns 对象 + gap(此类逐字节等价) |
已知坑(PR3998 已测量,照做省一轮返工)
验收
- 106 节点逐个转换,转换清单(文件→原 className→新 props)进 PR;
- 渲染等价抽样断言(沿 fields-form-hosted 的 harness 形态);
- 浏览器抽查 2-3 页缩略图正常;
- ⛔ 不碰 releases/;changeset 按 catalog ignore 判(报告写依据)。
Part of #3965(其词表终态 A/B 决策挂
needs-user-decision,本单是 PR #3998 测量确认任何终态下都成立的部分,提前拆出)。范围(测量出处:PR #3998 正文的判定表,基
0cbdca888)189 个
div节点中 106 个的 className 字面写着一等公民布局组件的能力,JSON 手写 Tailwind 复刻 props 本就是反模式,转换是纯赚:flex(不含flex-col)flex+ align/justify/gap propsspace-y-*stack+ gapmax-w-*container+ maxWidth/padding(注意默认 padding 4,需显式padding: 0保等价)grid/grid-cols-*grid+ columns 对象 + gap(此类逐字节等价)已知坑(PR3998 已测量,照做省一轮返工)
body而非children:flex/stack/grid/container 只渲染children,naive 换类型会静默丢内容 —— 这 4 个先改body→children再换。gap-2 sm:gap-3),转换语义保持但 640px 下非逐字节等价 —— 这是正确的范本写法,⛔ 不要用gap:0 + className 保留 gap-3硬凑逐字节(自相矛盾的授权)。div组件类型,docs 站每张缩略图都刷一条 deprecation warning #3965 决策)。cols错键由 examples/schema-catalog: 13 个 grid 示例用了未声明的cols键,列数被静默丢弃 —— 要 3/4 列的示例在 docs 站实际渲染成 2 列 #4001 修 —— 若两单相邻执行,后派的基于先合的 main。验收