diff --git a/apps/wiki/public/layout-recipes/annotation-lines.html b/apps/wiki/public/layout-recipes/annotation-lines.html index 04da8b3..94c958f 100644 --- a/apps/wiki/public/layout-recipes/annotation-lines.html +++ b/apps/wiki/public/layout-recipes/annotation-lines.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/diagonal-cards.html b/apps/wiki/public/layout-recipes/diagonal-cards.html index 0f0769f..99d9167 100644 --- a/apps/wiki/public/layout-recipes/diagonal-cards.html +++ b/apps/wiki/public/layout-recipes/diagonal-cards.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/diagonal-cards.png b/apps/wiki/public/layout-recipes/diagonal-cards.png index ed04f42..e8426f3 100644 Binary files a/apps/wiki/public/layout-recipes/diagonal-cards.png and b/apps/wiki/public/layout-recipes/diagonal-cards.png differ diff --git a/apps/wiki/public/layout-recipes/editorial-serif.html b/apps/wiki/public/layout-recipes/editorial-serif.html index cea6a0f..f92f34a 100644 --- a/apps/wiki/public/layout-recipes/editorial-serif.html +++ b/apps/wiki/public/layout-recipes/editorial-serif.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/horizontal-band.html b/apps/wiki/public/layout-recipes/horizontal-band.html index 3e15861..e14d073 100644 --- a/apps/wiki/public/layout-recipes/horizontal-band.html +++ b/apps/wiki/public/layout-recipes/horizontal-band.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/horizontal-band.png b/apps/wiki/public/layout-recipes/horizontal-band.png index 2836c31..e980e78 100644 Binary files a/apps/wiki/public/layout-recipes/horizontal-band.png and b/apps/wiki/public/layout-recipes/horizontal-band.png differ diff --git a/apps/wiki/public/layout-recipes/modular-grid.html b/apps/wiki/public/layout-recipes/modular-grid.html index 28c2944..219c579 100644 --- a/apps/wiki/public/layout-recipes/modular-grid.html +++ b/apps/wiki/public/layout-recipes/modular-grid.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/modular-grid.png b/apps/wiki/public/layout-recipes/modular-grid.png index 1163a89..ec27f3e 100644 Binary files a/apps/wiki/public/layout-recipes/modular-grid.png and b/apps/wiki/public/layout-recipes/modular-grid.png differ diff --git a/apps/wiki/public/layout-recipes/monumental-type.html b/apps/wiki/public/layout-recipes/monumental-type.html index a586f45..e78fe81 100644 --- a/apps/wiki/public/layout-recipes/monumental-type.html +++ b/apps/wiki/public/layout-recipes/monumental-type.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/monumental-type.png b/apps/wiki/public/layout-recipes/monumental-type.png index 34e9ba0..58a5867 100644 Binary files a/apps/wiki/public/layout-recipes/monumental-type.png and b/apps/wiki/public/layout-recipes/monumental-type.png differ diff --git a/apps/wiki/public/layout-recipes/offset-panels.html b/apps/wiki/public/layout-recipes/offset-panels.html index 1715db2..6066cd4 100644 --- a/apps/wiki/public/layout-recipes/offset-panels.html +++ b/apps/wiki/public/layout-recipes/offset-panels.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/offset-panels.png b/apps/wiki/public/layout-recipes/offset-panels.png index 22a6bc5..76f55a9 100644 Binary files a/apps/wiki/public/layout-recipes/offset-panels.png and b/apps/wiki/public/layout-recipes/offset-panels.png differ diff --git a/apps/wiki/public/layout-recipes/orbital-rings.html b/apps/wiki/public/layout-recipes/orbital-rings.html index 80ebaa1..9647d2a 100644 --- a/apps/wiki/public/layout-recipes/orbital-rings.html +++ b/apps/wiki/public/layout-recipes/orbital-rings.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/orbital-rings.png b/apps/wiki/public/layout-recipes/orbital-rings.png index f134191..4e45e4b 100644 Binary files a/apps/wiki/public/layout-recipes/orbital-rings.png and b/apps/wiki/public/layout-recipes/orbital-rings.png differ diff --git a/apps/wiki/public/layout-recipes/organic-ellipse.html b/apps/wiki/public/layout-recipes/organic-ellipse.html index 4821b96..06ac59f 100644 --- a/apps/wiki/public/layout-recipes/organic-ellipse.html +++ b/apps/wiki/public/layout-recipes/organic-ellipse.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/organic-ellipse.png b/apps/wiki/public/layout-recipes/organic-ellipse.png index 980e861..e935c09 100644 Binary files a/apps/wiki/public/layout-recipes/organic-ellipse.png and b/apps/wiki/public/layout-recipes/organic-ellipse.png differ diff --git a/apps/wiki/public/layout-recipes/router.png b/apps/wiki/public/layout-recipes/router.png index 3f12f9c..d794b54 100644 Binary files a/apps/wiki/public/layout-recipes/router.png and b/apps/wiki/public/layout-recipes/router.png differ diff --git a/apps/wiki/public/layout-recipes/split-contrast.html b/apps/wiki/public/layout-recipes/split-contrast.html index 3e64a42..55117a7 100644 --- a/apps/wiki/public/layout-recipes/split-contrast.html +++ b/apps/wiki/public/layout-recipes/split-contrast.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/split-contrast.png b/apps/wiki/public/layout-recipes/split-contrast.png index 4a6ef13..67d2a98 100644 Binary files a/apps/wiki/public/layout-recipes/split-contrast.png and b/apps/wiki/public/layout-recipes/split-contrast.png differ diff --git a/apps/wiki/public/layout-recipes/type-frame.html b/apps/wiki/public/layout-recipes/type-frame.html index 597ea35..2fd13e9 100644 --- a/apps/wiki/public/layout-recipes/type-frame.html +++ b/apps/wiki/public/layout-recipes/type-frame.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/vertical-rail.html b/apps/wiki/public/layout-recipes/vertical-rail.html index e4126fb..25cd804 100644 --- a/apps/wiki/public/layout-recipes/vertical-rail.html +++ b/apps/wiki/public/layout-recipes/vertical-rail.html @@ -8,7 +8,7 @@ *{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} diff --git a/apps/wiki/public/layout-recipes/vertical-rail.png b/apps/wiki/public/layout-recipes/vertical-rail.png index f6d6221..b83cb7f 100644 Binary files a/apps/wiki/public/layout-recipes/vertical-rail.png and b/apps/wiki/public/layout-recipes/vertical-rail.png differ diff --git a/apps/wiki/src/content/layouts/documents.ts b/apps/wiki/src/content/layouts/documents.ts index d07b5cc..ea93d59 100644 --- a/apps/wiki/src/content/layouts/documents.ts +++ b/apps/wiki/src/content/layouts/documents.ts @@ -6,7 +6,7 @@ export {recipes}; export const baseCss=`*{box-sizing:border-box} body{margin:0;background:#e4e6e1;color:#243230} .pl-frame{width:min(100%,1080px);margin-inline:auto;container-type:inline-size} -.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#637574;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} +.pl-sheet{--paper:#f5f3ec;--ink:#243230;--muted:#9aa6a5;--deep:#5d706e;position:relative;isolation:isolate;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--paper);color:var(--ink);font-size:1cqw;font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif} .pl-sheet .panel{position:absolute;background:var(--muted)} .pl-sheet .title{position:absolute;margin:0;font-weight:500;line-height:1.12;max-width:86%;overflow-wrap:anywhere} .pl-sheet .copy{position:absolute;margin:0;font-size:2.22em;line-height:1.65;white-space:pre-line} @@ -58,6 +58,6 @@ export const layoutDocuments:GuidanceDocument[]=[{ },...recipes.map((r,i):GuidanceDocument=>({ path:path(r.slug),title:`${String(i+1).padStart(2,'0')} · ${r.name}`,collection:'高级感排版', resources:[image(r.slug,r.name+' · 结构示意,非代码截图'),doc('router','总览 Router · 选择、技术栈与交付协议'),{id:'demo',kind:'document',title:'打开可运行 HTML 示例',href:'/layout-recipes/'+r.slug+'.html'}], - blocks:[p(`${r.name}:${r.scene}。本篇是一套可执行的设计配方;封面是独立绘制的构图示意,实际示例以 HTML/CSS 与 React 组件为准。`),h('何时使用与停止条件'),p(`适用:${r.scene}。不适用:${r.avoid}。标题默认 4—8 个汉字、正文不超过 40 字;超出时先拆页或转阅读版。品牌色与素材可替换,保持构图关系。`),h('构图参数'),p(r.geometry),p('默认 1080×1440,3:4;纸白 #f5f3ec,灰绿 #9aa6a5,深灰绿 #637574,文字 #243230。字号按画板缩放:1em=10.8px,正文 2.22em≈24px。网页阅读模式、字体与图片替换规则由总览 Router 统一管理。'),h('制作步骤'),p(r.steps),h('HTML / CSS:完整独立文件'),p('复制以下完整代码到 poster.html;默认无需网络资源。色块为占位,替换素材时遵守 Router 的图像与版权协议。'),code(recipeHtml(r)),links('demo'),h('React / TSX:可复用组件'),p(`保存为 components/layouts/${r.slug}/LayoutPoster.tsx;支持 title 与 subtitle 字符串 props。把下段 CSS 保存为同目录 poster.css,并在 React 应用入口导入。静态组件不需要 use client。`),code(recipeReact(r)),h('React 与 Next.js 共用 CSS'),code(recipeCss(r)),h('Next.js App Router:路由接入'),p(`下面的 page.tsx 对应 /designs/${r.slug},使用上面的组件和 CSS。新项目根布局、路径别名、next/image、next/font/local 与交互边界见 Router;已有项目保留自己的根布局。`),code(recipeNext(r)),h('本构图的验收标准'),p(r.check),p('共同检查:1080×1440 下标题完整、正文与底部版本行不重叠;375px 和 768px 下等比海报无意外横向滚动。若用于网页正文,启用 Router 的阅读模式并逐项检查。所有示例只有系统字体与结构占位,替换真实标题、字体和图片后须重新验收。'),h('变体与修改顺序'),p('先替换真实内容,再调整标题字号与说明长度,随后微调图形位置;最后才改变背景色和装饰。只调整该 slug 下的布局规则,避免影响其他构图。交付保留 HTML 或 TSX/CSS 源码、素材说明与导出文件。'),links('router'), + blocks:[p(`${r.name}:${r.scene}。本篇是一套可执行的设计配方;封面是独立绘制的构图示意,实际示例以 HTML/CSS 与 React 组件为准。`),h('何时使用与停止条件'),p(`适用:${r.scene}。不适用:${r.avoid}。标题默认 4—8 个汉字、正文不超过 40 字;超出时先拆页或转阅读版。品牌色与素材可替换,保持构图关系。`),h('构图参数'),p(r.geometry),p('默认 1080×1440,3:4;纸白 #f5f3ec,灰绿 #9aa6a5,深灰绿 #5d706e,文字 #243230。字号按画板缩放:1em=10.8px,正文 2.22em≈24px。网页阅读模式、字体与图片替换规则由总览 Router 统一管理。'),h('制作步骤'),p(r.steps),h('HTML / CSS:完整独立文件'),p('复制以下完整代码到 poster.html;默认无需网络资源。色块为占位,替换素材时遵守 Router 的图像与版权协议。'),code(recipeHtml(r)),links('demo'),h('React / TSX:可复用组件'),p(`保存为 components/layouts/${r.slug}/LayoutPoster.tsx;支持 title 与 subtitle 字符串 props。把下段 CSS 保存为同目录 poster.css,并在 React 应用入口导入。静态组件不需要 use client。`),code(recipeReact(r)),h('React 与 Next.js 共用 CSS'),code(recipeCss(r)),h('Next.js App Router:路由接入'),p(`下面的 page.tsx 对应 /designs/${r.slug},使用上面的组件和 CSS。新项目根布局、路径别名、next/image、next/font/local 与交互边界见 Router;已有项目保留自己的根布局。`),code(recipeNext(r)),h('本构图的验收标准'),p(r.check),p('共同检查:1080×1440 下标题完整、正文与底部版本行不重叠;375px 和 768px 下等比海报无意外横向滚动。若用于网页正文,启用 Router 的阅读模式并逐项检查。所有示例只有系统字体与结构占位,替换真实标题、字体和图片后须重新验收。'),h('变体与修改顺序'),p('先替换真实内容,再调整标题字号与说明长度,随后微调图形位置;最后才改变背景色和装饰。只调整该 slug 下的布局规则,避免影响其他构图。交付保留 HTML 或 TSX/CSS 源码、素材说明与导出文件。'),links('router'), ], }))]; diff --git a/apps/wiki/src/content/layouts/recipes.json b/apps/wiki/src/content/layouts/recipes.json index 423f519..af371c5 100644 --- a/apps/wiki/src/content/layouts/recipes.json +++ b/apps/wiki/src/content/layouts/recipes.json @@ -9,7 +9,7 @@ "check": "两块不接触;主块面积大于副块;标题与图块相距至少 24px;替换图片后两个容器比例不变。", "css": ".sheet.offset-panels .panel-a{left:18%;top:16%;width:68%;height:37%}.sheet.offset-panels .panel-b{left:37%;top:57%;width:49%;height:31%;background:var(--deep)}.sheet.offset-panels .title{left:7%;top:6%;font-size:6em}.sheet.offset-panels .copy{left:7%;top:66%;width:25%}", "markup": "
\n
\n

秩序之间

\n

以留白建立关系,\n让视线缓慢移动。

", - "shapes": "" + "shapes": "" }, { "slug": "vertical-rail", @@ -21,7 +21,7 @@ "check": "竖排标题不超过 8 个汉字;拉丁单词不要逐字竖排;正文横排;文字不进入主图安全区。", "css": ".sheet.vertical-rail .panel-a{left:7%;top:12%;width:64%;height:76%;background:var(--deep)}.sheet.vertical-rail .title{right:8%;top:13%;writing-mode:vertical-rl;font-size:6.3em;letter-spacing:.15em}.sheet.vertical-rail .copy{left:7%;bottom:5%;width:64%}", "markup": "
\n

静物的秩序

\n

空间研究 / 第二辑 / 2026

", - "shapes": "" + "shapes": "" }, { "slug": "monumental-type", @@ -33,7 +33,7 @@ "check": "裁切只作用于装饰字;H1 与正文不裁切;英文与主题有语义关联;字号层级至少 3:1。", "css": ".sheet.monumental-type .panel-a{left:0;bottom:0;width:100%;height:40%;background:var(--deep)}.sheet.monumental-type .display{position:absolute;left:-4%;top:26%;font:bold 24em/.8 Georgia,serif;letter-spacing:-.08em}.sheet.monumental-type .title{left:7%;top:10%;font-size:6em}.sheet.monumental-type .copy{left:7%;bottom:10%;width:60%;color:var(--paper)}", "markup": "
\n
FORM
\n

形式与留白

\n

让一个词成为画面的重心。\nDESIGN STUDIES / 2026

", - "shapes": "FORM" + "shapes": "FORM" }, { "slug": "orbital-rings", @@ -45,7 +45,7 @@ "check": "窄屏仍为正圆;环线不穿过文字;不要把装饰环误称数据刻度;有动画时尊重减少动态偏好。", "css": ".sheet.orbital-rings .orbit{position:absolute;left:14%;top:16%;width:72%;aspect-ratio:1;border-radius:50%;background:var(--deep);box-shadow:0 0 0 1.2em var(--paper),0 0 0 1.3em var(--muted),0 0 0 2.5em var(--paper),0 0 0 2.6em var(--muted),0 0 0 3.8em var(--paper),0 0 0 3.9em var(--muted)}.sheet.orbital-rings .title{left:7%;bottom:15%;font-size:6.5em}.sheet.orbital-rings .copy{left:7%;bottom:6%;width:80%}", "markup": "
\n

周而复始

\n

时间的形状 / ANNUAL REVIEW / 2026

", - "shapes": "" + "shapes": "" }, { "slug": "organic-ellipse", @@ -57,7 +57,7 @@ "check": "椭圆与标题无交叠;出血边缘不生成横向滚动;曲线的视觉重量在右侧;正文底部安全距至少 64px。", "css": ".sheet.organic-ellipse .oval{position:absolute;left:24%;top:27%;width:102%;height:62%;border-radius:50%;transform:rotate(-12deg);background:var(--deep)}.sheet.organic-ellipse .title{left:7%;top:10%;font-size:6.5em}.sheet.organic-ellipse .copy{left:7%;bottom:7%;width:40%}", "markup": "
\n

缓慢生长

\n

一条曲线,\n一处停顿。

", - "shapes": "" + "shapes": "" }, { "slug": "modular-grid", @@ -69,7 +69,7 @@ "check": "顺序与 DOM 阅读顺序一致;每项标题不超过 8 字;格间距一致;内容超出六项时分页,不能挤小文字。", "css": ".sheet.modular-grid .grid{position:absolute;left:7%;right:7%;top:28%;bottom:13%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2em}.sheet.modular-grid .cell{padding:2em;background:var(--muted);font-size:2.6em}.sheet.modular-grid .cell:first-child{background:var(--deep);color:var(--paper)}.sheet.modular-grid .title{left:7%;top:10%;font-size:6.5em}.sheet.modular-grid .copy{left:7%;bottom:5%;width:86%}", "markup": "

视觉档案

\n
01 / 观察
02 / 结构
03 / 材料
04 / 字体
05 / 色彩
06 / 留白
\n

INDEX / SIX DESIGN STUDIES

", - "shapes": "" + "shapes": "" }, { "slug": "editorial-serif", @@ -93,7 +93,7 @@ "check": "标题不能被色带边界切成难读的两段;带内文字保持足够对比;色带只负责分区,不伪装成按钮。", "css": ".sheet.horizontal-band .band{position:absolute;left:0;top:34%;width:100%;height:33%;background:var(--deep)}.sheet.horizontal-band .title{left:7%;top:12%;font-size:7em}.sheet.horizontal-band .sub{position:absolute;left:7%;top:43%;font-size:5.5em;color:var(--paper);line-height:1.1}.sheet.horizontal-band .copy{left:7%;bottom:12%;width:65%}", "markup": "
\n

留白练习

\n

CHAPTER
ZERO

\n

以一道横向色带,\n建立章节之间的停顿。

", - "shapes": "CHAPTER ZERO" + "shapes": "CHAPTER ZERO" }, { "slug": "diagonal-cards", @@ -105,7 +105,7 @@ "check": "倾斜不超过 6 度;角点留在安全区;不要给正文整体旋转;阴影只用一层低透明度。", "css": ".sheet.diagonal-cards .back{left:14%;top:27%;width:66%;height:49%;transform:rotate(-5deg);background:#dce0da}.sheet.diagonal-cards .front{left:20%;top:29%;width:66%;height:49%;transform:rotate(3deg);background:var(--deep);box-shadow:0 .6em 1.2em #24323015}.sheet.diagonal-cards .title{left:7%;top:8%;font-size:6.5em}.sheet.diagonal-cards .copy{left:7%;bottom:8%;width:80%}", "markup": "
\n
\n

纸上的实验

\n

材料笔记 / 两张卡片的轻微偏移

", - "shapes": "" + "shapes": "" }, { "slug": "annotation-lines", @@ -129,7 +129,7 @@ "check": "两个区域的关系能一句话说清;深区小字对比足够;边界没有压住文字;阅读顺序先上后下。", "css": ".sheet.split-contrast .dark{position:absolute;left:0;top:48%;width:100%;height:52%;background:var(--deep)}.sheet.split-contrast .title{left:7%;top:12%;font-size:7.5em}.sheet.split-contrast .answer{position:absolute;left:7%;top:59%;font-size:7.5em;line-height:1.1;color:var(--paper);margin:0}.sheet.split-contrast .copy{left:7%;bottom:10%;width:80%;color:var(--paper)}", "markup": "
\n

看见留白

\n

读懂秩序

\n

从空间到关系 / TWO PERSPECTIVES

", - "shapes": "读懂秩序" + "shapes": "读懂秩序" }, { "slug": "type-frame",