统一 Airshelf 界面组件与图标
This commit is contained in:
+67
-14
@@ -2,9 +2,9 @@
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title id="page-title">流水线 · 流·Studio</title>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="assets/restraint.css?v=202605211643">
|
||||
<title id="page-title">流水线 · Airshelf</title>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="assets/restraint.css?v=2026052607">
|
||||
<style>
|
||||
/* ─── Project header ─── */
|
||||
.proj-head { display: flex; justify-content: space-between; gap: 16px; margin-bottom: 22px; align-items: flex-start; }
|
||||
@@ -622,6 +622,24 @@
|
||||
.asset-card-2:hover { border-color: var(--heat-40); box-shadow: 0 1px 3px rgba(0,0,0,.04); }
|
||||
.asset-card-2 .thumb-2 { aspect-ratio: 1; }
|
||||
.asset-card-2 .body-2 { padding: 12px 14px; }
|
||||
.asset-card-2 .body-2 .btn:disabled,
|
||||
.asset-card-2 .body-2 .btn.disabled {
|
||||
background: transparent;
|
||||
border-color: transparent;
|
||||
color: var(--black-alpha-32);
|
||||
box-shadow: none;
|
||||
cursor: not-allowed;
|
||||
opacity: .72;
|
||||
transform: none;
|
||||
}
|
||||
.asset-card-2 .body-2 .btn:disabled:hover,
|
||||
.asset-card-2 .body-2 .btn.disabled:hover {
|
||||
background: transparent;
|
||||
border-color: transparent;
|
||||
color: var(--black-alpha-32);
|
||||
box-shadow: none;
|
||||
transform: none;
|
||||
}
|
||||
.asset-card-2 .body-2 .btn-apply { background: var(--heat); color: var(--accent-white); border: 1px solid var(--heat); }
|
||||
.asset-card-2 .body-2 .btn-apply:hover { box-shadow: var(--shadow-cta-hover); }
|
||||
|
||||
@@ -1179,6 +1197,39 @@
|
||||
.sb-scene-thumb .sub { font-family: var(--font-mono); font-size: 10.5px; color: var(--black-alpha-48); }
|
||||
.sb-main-img { aspect-ratio: 16/9; min-height: 0; }
|
||||
|
||||
.sb-rerun-note {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 10px;
|
||||
padding: 10px 12px;
|
||||
margin-bottom: 14px;
|
||||
background: rgba(180,83,9,.08);
|
||||
border: 1px solid rgba(180,83,9,.20);
|
||||
border-radius: var(--r-md);
|
||||
color: #7C3A05;
|
||||
line-height: 1.55;
|
||||
}
|
||||
.sb-rerun-note .warn-ic {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
border-radius: var(--r-sm);
|
||||
background: rgba(180,83,9,.12);
|
||||
color: #B45309;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
flex: 0 0 22px;
|
||||
}
|
||||
.sb-rerun-note .warn-ic svg {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
.sb-rerun-note .note-copy {
|
||||
min-width: 0;
|
||||
font-size: 11.5px;
|
||||
}
|
||||
.sb-rerun-note strong { color: #B45309; }
|
||||
.sb-rerun-note a { color: #B45309; text-decoration: underline; text-underline-offset: 2px; }
|
||||
|
||||
.sb-stage-actions { display: flex; gap: 8px; margin-top: 14px; margin-bottom: 12px; }
|
||||
|
||||
/* 故事板历史版本 */
|
||||
@@ -1759,11 +1810,12 @@
|
||||
<div class="muted-2" style="font-size:12px; line-height:1.55; margin-bottom:10px;">
|
||||
整张故事板由 image-2 一次性输出,包含画面 + 镜头说明。
|
||||
</div>
|
||||
<div style="display:flex; gap:8px; align-items:flex-start; padding:9px 10px; margin-bottom:14px; background:rgba(180,83,9,.08); border:1px solid rgba(180,83,9,.20); border-radius:var(--r-sm);">
|
||||
<svg style="flex-shrink:0;margin-top:1px;" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="#B45309" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 8v4M12 16h.01"/></svg>
|
||||
<div style="font-size:11.5px; color:#7C3A05; line-height:1.55; min-width:0;">
|
||||
<strong style="color:#B45309;">仅支持整张重跑</strong> · 不能局部改某一镜。如需调单镜,先在 <a href="#stage-1" style="color:#B45309;text-decoration:underline;">Stage 1 脚本</a> 改镜头描述,再回此处整张重跑。
|
||||
<div style="font-family:var(--font-mono); font-size:10.5px; color:rgba(180,83,9,.7); letter-spacing:.02em; margin-top:3px;">// PRD §5.2 · image-2 单次输出限制</div>
|
||||
<div class="sb-rerun-note">
|
||||
<span class="warn-ic" aria-hidden="true">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><path d="M12 9v4M12 17h.01"/></svg>
|
||||
</span>
|
||||
<div class="note-copy">
|
||||
<strong>仅支持整张重跑</strong> · 不能局部改某一镜。如需调单镜,先在 <a href="#stage-1">Stage 1 脚本</a> 改镜头描述,再回此处整张重跑。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2423,7 +2475,8 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<script src="assets/shell.js?v=202605211643"></script>
|
||||
<script src="assets/icons.js?v=2026052608"></script>
|
||||
<script src="assets/shell.js?v=2026052607"></script>
|
||||
<script>
|
||||
/* ─── 商品名贯穿全流程(从 ?product= 读取,无参数时回退到 mock 默认值)─── */
|
||||
const URL_PRODUCT_NAME = (function () {
|
||||
@@ -2451,7 +2504,7 @@ Shell.render({
|
||||
});
|
||||
|
||||
/* 渲染贯穿商品名 / 项目名 */
|
||||
document.getElementById('page-title').textContent = PROJECT_TITLE + ' · 流水线 · 流·Studio';
|
||||
document.getElementById('page-title').textContent = PROJECT_TITLE + ' · 流水线 · Airshelf';
|
||||
|
||||
/* ─── 把 stage-pill anchor 注入 .topbar 中部(圆点全状态都靠 .sp-dot 实时同步)─── */
|
||||
(function _injectStagePill() {
|
||||
@@ -3033,7 +3086,7 @@ const Stage2 = (function () {
|
||||
const tags = [a.vibe, a.age, a.hairLen, a.region, a.skin].filter(Boolean);
|
||||
const props = [
|
||||
['性别', a.gender], ['种族', a.region], ['作品ID', _fmtAssetId(name, 'model')],
|
||||
['年龄段', a.age], ['气质', a.vibe], ['创作人', '流·Studio'],
|
||||
['年龄段', a.age], ['气质', a.vibe], ['创作人', 'Airshelf'],
|
||||
['身高', a.height], ['体格', a.build], ['文件大小', _fmtFileSize(name)],
|
||||
['发型', a.hairLen + ' · ' + a.hairColor], ['来源', sourceLabel], ['发布时间', '2024-05-20'],
|
||||
];
|
||||
@@ -3047,7 +3100,7 @@ const Stage2 = (function () {
|
||||
} else {
|
||||
const props = [
|
||||
['类别', '场景 · ' + (isOwn ? '我的上传' : '预设')], ['标签', sub || '-'], ['作品ID', _fmtAssetId(name, 'scene')],
|
||||
['来源', sourceLabel], ['用途', '本项目场景资产'], ['创作人', '流·Studio'],
|
||||
['来源', sourceLabel], ['用途', '本项目场景资产'], ['创作人', 'Airshelf'],
|
||||
['镜头', '通用'], ['光线', '自然光'], ['文件大小', _fmtFileSize(name)],
|
||||
];
|
||||
renderAssetDetail({
|
||||
@@ -3084,7 +3137,7 @@ const Stage2 = (function () {
|
||||
const kindLabelMap = { character: '人物', scene: '场景', product: '商品' };
|
||||
const baseProps = d.info.slice();
|
||||
baseProps.push(['作品ID', _fmtAssetId(d.title, d.kind === 'character' ? 'model' : d.kind === 'scene' ? 'scene' : 'product')]);
|
||||
baseProps.push(['创作人', '流·Studio']);
|
||||
baseProps.push(['创作人', 'Airshelf']);
|
||||
baseProps.push(['文件大小', _fmtFileSize(d.title)]);
|
||||
baseProps.push(['发布时间', '2024-05-20']);
|
||||
renderAssetDetail({
|
||||
@@ -3398,7 +3451,7 @@ const Stage2 = (function () {
|
||||
const _MC_SVG = {
|
||||
rerun: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 11-3-6.7L21 8M21 3v5h-5"/></svg>',
|
||||
dl: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 15V3"/></svg>',
|
||||
more: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="5" cy="12" r="1.2"/><circle cx="12" cy="12" r="1.2"/><circle cx="19" cy="12" r="1.2"/></svg>',
|
||||
more: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="5" cy="12" r="1.6" fill="currentColor" stroke="none"/><circle cx="12" cy="12" r="1.6" fill="currentColor" stroke="none"/><circle cx="19" cy="12" r="1.6" fill="currentColor" stroke="none"/></svg>',
|
||||
adopt: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21l-7-5-7 5V5a2 2 0 012-2h10a2 2 0 012 2z"/></svg>',
|
||||
del: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1.5 14a2 2 0 01-2 1.8H8.5a2 2 0 01-2-1.8L5 6"/></svg>',
|
||||
edit: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 013 3L7 19l-4 1 1-4L16.5 3.5z"/></svg>',
|
||||
|
||||
Reference in New Issue
Block a user