chore: baseline V8.10.0-dev.1 with v8_workflows type-mapping fix and trade-pro spec
- SiteForge Enterprise V8.10.0-dev.1 upstream source (210 tests) - Fix: v8_workflows._mapped_input now reads both 类型/分类 columns so WXR imports keep post/product types instead of collapsing to page - Docs: trade-pro theme port spec (R3) and implementation plan Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"id": "minimal",
|
||||
"name": "极简创意",
|
||||
"description": "奶油白和纯黑,编辑式排版与作品展示",
|
||||
"version": "0.3.0",
|
||||
"style": "editorial",
|
||||
"entry": "site.html",
|
||||
"styles": [
|
||||
"theme.css",
|
||||
"blocks.css"
|
||||
],
|
||||
"page_templates": [
|
||||
"home",
|
||||
"about",
|
||||
"contact",
|
||||
"listing",
|
||||
"product",
|
||||
"article",
|
||||
"brand",
|
||||
"standard",
|
||||
"notfound"
|
||||
],
|
||||
"blocks": [
|
||||
"hero",
|
||||
"richtext",
|
||||
"features",
|
||||
"stats",
|
||||
"collection",
|
||||
"image_text",
|
||||
"gallery",
|
||||
"faq",
|
||||
"cta",
|
||||
"attributes",
|
||||
"spacer"
|
||||
],
|
||||
"responsive": true,
|
||||
"auto_binding": true
|
||||
}
|
||||
@@ -0,0 +1,233 @@
|
||||
{
|
||||
"home": [
|
||||
{
|
||||
"id": "612f6ea910",
|
||||
"type": "hero",
|
||||
"visible": true,
|
||||
"title": "少即是多,体验至上",
|
||||
"subtitle": "DESIGN THAT MATTERS",
|
||||
"description": "{{site.tagline}}",
|
||||
"button": "探索作品",
|
||||
"href": "/product/",
|
||||
"align": "left"
|
||||
},
|
||||
{
|
||||
"id": "a448a548e5",
|
||||
"type": "image_text",
|
||||
"visible": true,
|
||||
"title": "设计不止于外观",
|
||||
"subtitle": "OUR PHILOSOPHY",
|
||||
"description": "展示业务流程和服务理念。",
|
||||
"image": "",
|
||||
"image_side": "right",
|
||||
"button": "了解更多",
|
||||
"href": "/about/"
|
||||
},
|
||||
{
|
||||
"id": "8a2f9a939b",
|
||||
"type": "collection",
|
||||
"visible": true,
|
||||
"title": "精选项目",
|
||||
"subtitle": "SELECTED WORK",
|
||||
"source": "case",
|
||||
"limit": 6,
|
||||
"columns": 3,
|
||||
"button": "查看全部",
|
||||
"href": "/product/"
|
||||
},
|
||||
{
|
||||
"id": "e27cec0c11",
|
||||
"type": "gallery",
|
||||
"visible": true,
|
||||
"title": "视觉记录",
|
||||
"images": [],
|
||||
"columns": 3
|
||||
},
|
||||
{
|
||||
"id": "2bb8c1f33e",
|
||||
"type": "cta",
|
||||
"visible": true,
|
||||
"title": "有一个新的想法?",
|
||||
"subtitle": "告诉我们您的需求,我们将提供适合的方案。",
|
||||
"button": "联系我们",
|
||||
"href": "/contact/"
|
||||
}
|
||||
],
|
||||
"about": [
|
||||
{
|
||||
"id": "35e7b20667",
|
||||
"type": "image_text",
|
||||
"visible": true,
|
||||
"title": "认识我们",
|
||||
"subtitle": "OUR APPROACH",
|
||||
"description": "展示业务流程和服务理念。",
|
||||
"image": "",
|
||||
"image_side": "right",
|
||||
"button": "了解更多",
|
||||
"href": "/about/"
|
||||
},
|
||||
{
|
||||
"id": "61ff3a5f5c",
|
||||
"type": "stats",
|
||||
"visible": true,
|
||||
"title": "我们的实力",
|
||||
"items": [
|
||||
{
|
||||
"value": "50,000+",
|
||||
"label": "服务案例"
|
||||
},
|
||||
{
|
||||
"value": "70+",
|
||||
"label": "市场覆盖"
|
||||
},
|
||||
{
|
||||
"value": "30+",
|
||||
"label": "合作伙伴"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "8bceb456e8",
|
||||
"type": "features",
|
||||
"visible": true,
|
||||
"title": "我们的优势",
|
||||
"items": [
|
||||
{
|
||||
"title": "专业服务",
|
||||
"text": "从咨询到交付"
|
||||
},
|
||||
{
|
||||
"title": "品质保障",
|
||||
"text": "严格的质量流程"
|
||||
},
|
||||
{
|
||||
"title": "全球网络",
|
||||
"text": "连接不同市场"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"contact": [
|
||||
{
|
||||
"id": "a6a53010e6",
|
||||
"type": "richtext",
|
||||
"visible": true,
|
||||
"title": "联系我们",
|
||||
"body": "<p>请填写企业联系方式与地址。</p>"
|
||||
},
|
||||
{
|
||||
"id": "17485c5650",
|
||||
"type": "cta",
|
||||
"visible": true,
|
||||
"title": "欢迎联系",
|
||||
"subtitle": "告诉我们您的需求,我们将提供适合的方案。",
|
||||
"button": "联系我们",
|
||||
"href": "/contact/"
|
||||
}
|
||||
],
|
||||
"listing": [
|
||||
{
|
||||
"id": "10c25d0a3c",
|
||||
"type": "collection",
|
||||
"visible": true,
|
||||
"title": "全部作品",
|
||||
"subtitle": "为客户提供适合的解决方案",
|
||||
"source": "case",
|
||||
"limit": 24,
|
||||
"columns": 2,
|
||||
"button": "查看全部",
|
||||
"href": "/product/"
|
||||
}
|
||||
],
|
||||
"product": [
|
||||
{
|
||||
"id": "3ee3cf11c4",
|
||||
"type": "image_text",
|
||||
"visible": true,
|
||||
"title": "产品介绍",
|
||||
"subtitle": "OUR APPROACH",
|
||||
"description": "{{page.summary}}",
|
||||
"image": "{{page.cover}}",
|
||||
"image_side": "right",
|
||||
"button": "了解更多",
|
||||
"href": "/about/"
|
||||
},
|
||||
{
|
||||
"id": "04dee2c7f5",
|
||||
"type": "attributes",
|
||||
"visible": true,
|
||||
"title": "产品规格与参数"
|
||||
},
|
||||
{
|
||||
"id": "8282854cb4",
|
||||
"type": "richtext",
|
||||
"visible": true,
|
||||
"title": "产品详情",
|
||||
"body": "{{page.body}}"
|
||||
},
|
||||
{
|
||||
"id": "7cbffd4a6b",
|
||||
"type": "cta",
|
||||
"visible": true,
|
||||
"title": "开启新的合作",
|
||||
"subtitle": "告诉我们您的需求,我们将提供适合的方案。",
|
||||
"button": "联系我们",
|
||||
"href": "/contact/"
|
||||
}
|
||||
],
|
||||
"article": [
|
||||
{
|
||||
"id": "7b72e8bf3f",
|
||||
"type": "richtext",
|
||||
"visible": true,
|
||||
"title": "{{page.title}}",
|
||||
"body": "{{page.body}}"
|
||||
}
|
||||
],
|
||||
"brand": [
|
||||
{
|
||||
"id": "6c6b62b1f7",
|
||||
"type": "image_text",
|
||||
"visible": true,
|
||||
"title": "{{page.title}}",
|
||||
"subtitle": "OUR APPROACH",
|
||||
"description": "{{page.summary}}",
|
||||
"image": "{{page.cover}}",
|
||||
"image_side": "right",
|
||||
"button": "了解更多",
|
||||
"href": "/about/"
|
||||
},
|
||||
{
|
||||
"id": "1e8d347355",
|
||||
"type": "collection",
|
||||
"visible": true,
|
||||
"title": "品牌产品",
|
||||
"subtitle": "为客户提供适合的解决方案",
|
||||
"source": "product",
|
||||
"limit": 6,
|
||||
"columns": 3,
|
||||
"button": "查看全部",
|
||||
"href": "/product/"
|
||||
}
|
||||
],
|
||||
"standard": [
|
||||
{
|
||||
"id": "82c5bbcae8",
|
||||
"type": "richtext",
|
||||
"visible": true,
|
||||
"title": "{{page.title}}",
|
||||
"body": "{{page.body}}"
|
||||
}
|
||||
],
|
||||
"notfound": [
|
||||
{
|
||||
"id": "d197054638",
|
||||
"type": "cta",
|
||||
"visible": true,
|
||||
"title": "页面暂时无法访问",
|
||||
"subtitle": "告诉我们您的需求,我们将提供适合的方案。",
|
||||
"button": "返回首页",
|
||||
"href": "/"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><base href="/"><title>{{seo_title}}</title><meta name="description" content="{{seo_description}}"><meta name="robots" content="{{'noindex,follow' if mode=='notfound' else (page.robots or 'index,follow')}}">{% if canonical %}<link rel="canonical" href="{{canonical}}">{% endif %}<link rel="stylesheet" href="assets/theme.css"><link rel="stylesheet" href="assets/blocks.css"><link rel="stylesheet" href="assets/custom.css"></head><body>
|
||||
<header class="container header"><a href="./" class="brand">{{site.name}}<span>®</span></a><nav><a href="./">Index</a>{% for n in nav if n.route!='/' %}<a href="{{link(n.route)}}">{{n.title}}</a>{% endfor %}{% if entries|selectattr('type','equalto','product')|list %}<a href="product/">Collection</a>{% endif %}{% if entries|selectattr('type','equalto','post')|list %}<a href="post/">Journal</a>{% endif %}</nav><a class="contact" href="mailto:{{site.email or "info@example.com"}}">CONTACT ↗</a></header>
|
||||
{% if blueprint_mode %}{% elif mode=='home' %}<section class="container hero"><div class="topline"><span>ESTABLISHED IN IDEAS.</span><span>DESIGNED FOR CHANGE.</span></div><h1>{{page.title if page.title!=site.name else 'Less, but better.'}}</h1><div class="hero-bottom"><p>{{page.summary or site.tagline or 'Thoughtfully made. Beautifully simple. Designed to make an impact.'}}</p><a href="product/">EXPLORE THE WORK <b>↗</b></a></div>{% if page.cover %}<div class="hero-image"><img src="{{asset(page.cover)}}" alt="{{page.title}}"></div>{% else %}<div class="hero-image graphic"><div class="shape a"></div><div class="shape b"></div><div class="shape c"></div><span>SIMPLICITY<br>IS INTENTIONAL.</span></div>{% endif %}</section>
|
||||
{% else %}<section class="container inner-hero"><span class="topline">{{type_names.get(page.type,'THE STUDIO')|upper}} <b>—</b> {{'INDEX' if mode=='listing' else 'ABOUT'}}</span><h1>{{page.title}}</h1><p>{{page.summary}}</p></section>{% endif %}
|
||||
{% if blueprint_mode %}<main class="sf-canvas">{{blocks}}</main>{% else %}<main class="container content">{% if mode in ['detail','home'] and (content or blocks) %}<article class="rich-content">{{blocks}}{{content}}</article>{% endif %}{% if mode=='detail' and page.cover %}<div class="detail-img"><img src="{{asset(page.cover)}}" alt="{{page.title}}"></div>{% endif %}
|
||||
{% set picks=listing_items if mode=='listing' else entries|selectattr('type','equalto','product')|list if mode=='home' else [] %}
|
||||
{% if picks %}<div class="list-head"><span>01 / SELECTED WORK</span><h2>{{'Our collection' if mode=='home' else page.title}}</h2></div><div class="list">{% for item in picks[:12] %}<a href="{{link(item.route)}}" class="item"><div class="thumb">{% if item.cover %}<img src="{{asset(item.cover)}}" alt="{{item.title}}">{% else %}<span>{{'%02d' % loop.index}}</span>{% endif %}</div><div class="info"><span>COLLECTION / {{'%02d' % loop.index}}</span><h3>{{item.title}}</h3><p>{{item.summary|truncate(110)}}</p><b>VIEW PROJECT ↗</b></div></a>{% endfor %}</div>{% endif %}
|
||||
</main>{% endif %}<footer class="container"><div class="footer-lead">Good design<br>means business. <span>↗</span></div><div class="footer-bottom"><span>{{site.name}} — {{site.tagline}}</span><span>© {{site.name}} · SITEFORGE</span></div></footer></body></html>
|
||||
@@ -0,0 +1 @@
|
||||
*{box-sizing:border-box}body{margin:0;color:#171717;background:#faf9f6;font:16px/1.6 Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}.container{width:min(1260px,90%);margin:auto}.header{height:110px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #cccac4}.brand{font-family:Georgia,"Times New Roman",serif;font-size:30px;font-weight:bold;letter-spacing:-1px}.brand span{font-size:12px;vertical-align:top}.header nav{display:flex;gap:33px;font-size:12px;flex-wrap:wrap}.header nav a:hover{text-decoration:underline}.contact{font-size:12px;font-weight:bold;border-bottom:1px solid black;padding-bottom:5px}.hero{padding:48px 0 0}.topline{display:flex;justify-content:space-between;font-size:10px;letter-spacing:2.3px;font-weight:bold}.hero h1,.inner-hero h1{font-family:Georgia,"Times New Roman",serif;font-size:clamp(65px,9.1vw,155px);line-height:1;letter-spacing:-8px;font-weight:400;margin:85px 0 40px}.hero-bottom{display:flex;justify-content:space-between;align-items:end;margin:35px 0 64px;gap:25px}.hero-bottom p{font-size:18px;max-width:490px;margin:0}.hero-bottom a{font-size:12px;letter-spacing:1.5px;border-bottom:1px solid black;padding-bottom:8px}.hero-image{height:425px;background:#deddd4;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center}.hero-image img{height:100%;width:100%;object-fit:cover}.graphic{background:#cec8bc}.shape{position:absolute;border-radius:50%;background:linear-gradient(125deg,#ede9e1,#98918a);box-shadow:25px 30px 40px #59544c22}.shape.a{height:550px;width:550px;left:5%;top:-230px}.shape.b{width:280px;height:280px;right:15%;bottom:-120px;background:#989e97}.shape.c{width:160px;height:160px;right:40%;top:0;background:#ece9e3}.graphic>span{position:relative;font-size:25px;letter-spacing:7px;font-weight:500;line-height:1.5}.inner-hero{padding:80px 0;border-bottom:1px solid #d3d0ca}.inner-hero h1{font-size:clamp(48px,8vw,115px);margin:40px 0}.inner-hero p{font-size:18px;color:#777;max-width:660px}.content{padding:70px 0 130px}.list-head{display:grid;grid-template-columns:1fr 2fr;align-items:center;margin:30px 0 40px;border-bottom:1px solid black}.list-head span{font-size:10px;letter-spacing:2px}.list-head h2{font-family:Georgia,serif;font-weight:400;font-size:54px;letter-spacing:-2px}.list{display:grid;grid-template-columns:repeat(2,1fr);gap:80px 35px}.item{display:block}.item:hover h3{text-decoration:underline}.thumb{height:290px;background:#e3e1d8;display:grid;place-items:center}.thumb img{width:100%;height:100%;object-fit:contain}.thumb span{font-family:Georgia,serif;font-size:140px;color:#c0bcb2}.info{padding:25px 0}.info>span{font-size:10px;letter-spacing:1.5px}.info h3{font-family:Georgia,serif;font-size:36px;font-weight:400;margin:12px 0}.info p{color:#666;max-width:400px}.info b{font-size:11px;letter-spacing:1px}.rich-content{margin:25px 0}.section{padding:45px 0}.block-hero{padding:50px 0}.block-hero h1{font-family:Georgia,serif;font-size:60px;font-weight:400}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.feature{border-top:1px solid #8f8a84;padding-top:20px}.feature-mark{font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,1fr)}.stat strong{font-family:Georgia,serif;display:block;font-size:47px;font-weight:400}.stat span{font-size:11px;letter-spacing:1px}.cta{padding:55px;background:#e4e0d8}.cta h2{font-family:Georgia,serif;font-weight:400;font-size:44px}.btn{display:inline-block;background:#222;color:white;padding:13px 20px;font-size:12px}.detail-img img{max-width:100%;max-height:550px}footer{border-top:1px solid #b9b5ae;padding:70px 0 25px}.footer-lead{font-family:Georgia,serif;font-size:clamp(45px,6vw,90px);line-height:1.05;letter-spacing:-4px}.footer-lead span{color:#909084}.footer-bottom{display:flex;justify-content:space-between;border-top:1px solid #d5d1c9;margin-top:90px;padding-top:25px;font-size:11px;color:#777}@media(max-width:850px){.header{height:auto;padding:26px 0;flex-wrap:wrap}.header nav{order:3;width:100%}.hero h1{letter-spacing:-4px;margin-top:60px}.hero-image{height:320px}.list{gap:35px}.list-head{grid-template-columns:1fr}.footer-lead{letter-spacing:-2px}}@media(max-width:560px){.list,.feature-grid,.stats{grid-template-columns:1fr}.hero h1{font-size:67px}.hero-bottom,.topline,.footer-bottom{flex-direction:column;align-items:start;gap:15px}.hero-image{height:240px}.list-head h2{font-size:40px}.inner-hero{padding:50px 0}}
|
||||
Reference in New Issue
Block a user