feat(workbench): 三工序图片区视觉对齐 + 任务中心聚合 + 工具台头部筛选
- model-photo / platform-cover · 头部 toolbar 落地: 时间 / 模特(平台) chip 下拉 + 折叠搜索 - model-photo / platform-cover · 图片卡片样式同步图片创作 (.io-cell): bg / hover / .gen 脉冲 / .err 红框 - model-photo / platform-cover · 单图 hover overlay: 再次生成 + 下载 + 更多(加入资产库/删除) - model-photo / platform-cover · 批次底栏: 再次生成图标统一 + 更多 menu(全部加入资产库/删除该批) - model-photo · 修 TDZ bug: renderModelMini 调用挪到 MODELS 声明后, 解决整页崩溃 - model-photo · 去掉冗余 pv-summary, 商品自动选最近编辑, task 写入 name 字段 - image-optimize · 单图右上加再次生成图标, 加入 fs-image-tasks-image 与任务中心打通 - image-optimize · 输入区拆 3 行: + 在顶 / textarea 满宽 / 发送在底栏右; 参考图缩略与加号同 64×64 - asset-factory · 任务中心加时间 chip + image 类型 + 跳转表; 删冗余类型列 - pipeline · stage2 商品卡换商品库风格 + AI 生成三视图主 CTA + .tri-missing-badge[hidden] CSS 修复
This commit is contained in:
+128
-8
@@ -431,6 +431,15 @@ main { position: relative; background: var(--background-base); min-width: 0; }
|
||||
}
|
||||
.page-head .sub .mono { font-family: var(--font-mono); font-size: 11.5px; color: var(--black-alpha-48); letter-spacing: .04em; }
|
||||
.page-head .actions { display: flex; gap: 10px; align-items: center; }
|
||||
/* page-head 右上角主操作按钮 · 统一尺寸(对齐 .btn-lg),覆盖各页里 btn / btn-sm / btn-lg 混用 */
|
||||
.page-head .actions > .btn,
|
||||
.page-head .actions > a.btn,
|
||||
.page-head .actions > button.btn {
|
||||
height: 40px;
|
||||
padding: 0 20px;
|
||||
font-size: 13.5px;
|
||||
}
|
||||
.page-head .actions > .btn svg { width: 14px; height: 14px; }
|
||||
|
||||
.section-h { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 14px; }
|
||||
.section-h h2 { font-size: 16px; font-weight: 600; letter-spacing: -.01em; color: var(--accent-black); }
|
||||
@@ -1415,11 +1424,22 @@ table.t tbody tr:hover { background: var(--black-alpha-4); }
|
||||
background: var(--background-lighter);
|
||||
}
|
||||
|
||||
/* ─── Scrollbar ─── */
|
||||
::-webkit-scrollbar { width: 8px; height: 8px; }
|
||||
::-webkit-scrollbar-track { background: transparent; }
|
||||
::-webkit-scrollbar-thumb { background: var(--black-alpha-12); border-radius: 4px; }
|
||||
::-webkit-scrollbar-thumb:hover { background: var(--black-alpha-24); }
|
||||
/* ─── Scrollbar · 全局隐藏可视滚动条,保留滚动能力
|
||||
用 !important 覆盖各页 inline <style> 里残留的 scrollbar-width:thin / 自定义 webkit 滚动条 ─── */
|
||||
* { scrollbar-width: none !important; -ms-overflow-style: none !important; }
|
||||
*::-webkit-scrollbar {
|
||||
width: 0 !important;
|
||||
height: 0 !important;
|
||||
display: none !important;
|
||||
-webkit-appearance: none !important;
|
||||
}
|
||||
*::-webkit-scrollbar-track,
|
||||
*::-webkit-scrollbar-thumb,
|
||||
*::-webkit-scrollbar-thumb:hover,
|
||||
*::-webkit-scrollbar-corner {
|
||||
background: transparent !important;
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* ─── Responsive ─── */
|
||||
@media (max-width: 1100px) {
|
||||
@@ -1456,10 +1476,29 @@ table.t tbody tr:hover { background: var(--black-alpha-4); }
|
||||
letter-spacing: .03em;
|
||||
border-radius: var(--r-sm);
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,.12);
|
||||
pointer-events: none;
|
||||
cursor: help;
|
||||
user-select: none;
|
||||
transition: background var(--t-base), box-shadow var(--t-base), transform var(--t-base);
|
||||
}
|
||||
.tri-missing-badge::before {
|
||||
.tri-missing-badge[hidden] { display: none; }
|
||||
.tri-missing-badge:hover {
|
||||
box-shadow: 0 3px 8px rgba(0,0,0,.18);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
.tri-missing-badge .ico {
|
||||
width: 12px; height: 12px;
|
||||
border: 1px solid currentColor;
|
||||
border-radius: 50%;
|
||||
display: grid; place-items: center;
|
||||
font-size: 9px; font-weight: 700;
|
||||
line-height: 1;
|
||||
font-family: var(--font-mono);
|
||||
}
|
||||
.tri-missing-badge .ico::before { content: '!'; }
|
||||
.tri-missing-badge .lbl-mono { font-family: var(--font-mono); letter-spacing: .04em; }
|
||||
|
||||
/* 兼容旧 markup(没有 .ico 子元素的也保留 ! 圆点) */
|
||||
.tri-missing-badge:not(:has(.ico))::before {
|
||||
content: '!';
|
||||
width: 12px; height: 12px;
|
||||
border: 1px solid currentColor;
|
||||
@@ -1468,4 +1507,85 @@ table.t tbody tr:hover { background: var(--black-alpha-4); }
|
||||
font-size: 9px; font-weight: 700;
|
||||
line-height: 1;
|
||||
}
|
||||
.tri-missing-badge .lbl-mono { font-family: var(--font-mono); letter-spacing: .04em; }
|
||||
|
||||
/* hover popover · V2.1 dark tooltip with arrow */
|
||||
.tri-missing-pop {
|
||||
position: absolute;
|
||||
top: calc(100% + 9px);
|
||||
left: 0;
|
||||
width: 252px;
|
||||
padding: 11px 13px 12px;
|
||||
background: var(--accent-black);
|
||||
color: var(--accent-white);
|
||||
border-radius: var(--r-md);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,.20), 0 2px 6px rgba(0,0,0,.10);
|
||||
opacity: 0; visibility: hidden;
|
||||
transform: translateY(-4px);
|
||||
transition: opacity .15s ease, visibility .15s ease, transform .15s ease;
|
||||
pointer-events: none;
|
||||
z-index: 30;
|
||||
font-family: var(--font-sans);
|
||||
font-weight: 400;
|
||||
letter-spacing: 0;
|
||||
text-transform: none;
|
||||
text-align: left;
|
||||
cursor: default;
|
||||
}
|
||||
.tri-missing-pop::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -5px; left: 14px;
|
||||
width: 10px; height: 10px;
|
||||
background: var(--accent-black);
|
||||
transform: rotate(45deg);
|
||||
border-radius: 2px;
|
||||
}
|
||||
.tri-missing-pop .pop-h {
|
||||
display: flex; align-items: center; gap: 6px;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
letter-spacing: .04em;
|
||||
color: var(--heat);
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.tri-missing-pop .pop-h svg { display: block; }
|
||||
.tri-missing-pop .pop-body {
|
||||
font-size: 12px;
|
||||
line-height: 1.6;
|
||||
color: rgba(255,255,255,.88);
|
||||
}
|
||||
.tri-missing-pop .pop-tip {
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
padding-top: 8px;
|
||||
border-top: 1px solid rgba(255,255,255,.12);
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
line-height: 1.55;
|
||||
letter-spacing: .02em;
|
||||
color: rgba(255,255,255,.78);
|
||||
}
|
||||
.tri-missing-pop .pop-tip b {
|
||||
color: var(--accent-white);
|
||||
font-weight: 600;
|
||||
letter-spacing: .03em;
|
||||
}
|
||||
.tri-missing-badge:hover .tri-missing-pop,
|
||||
.tri-missing-badge:focus-within .tri-missing-pop {
|
||||
opacity: 1; visibility: visible; transform: translateY(0);
|
||||
transition-delay: .12s;
|
||||
}
|
||||
|
||||
/* 让 popover 能溢出 thumb / 卡片 容器(否则被 overflow:hidden 裁切) */
|
||||
.placeholder:has(.tri-missing-badge:hover),
|
||||
.placeholder:has(.tri-missing-badge:focus-within) {
|
||||
overflow: visible;
|
||||
z-index: 4;
|
||||
}
|
||||
.product-card:has(.tri-missing-badge:hover),
|
||||
.product-card:has(.tri-missing-badge:focus-within),
|
||||
.asset-card:has(.tri-missing-badge:hover),
|
||||
.asset-card:has(.tri-missing-badge:focus-within) {
|
||||
overflow: visible;
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user