Files
omniai-web/src/styles/pages/assets.css
T
stringadmin f5a75074a4 feat: 邮箱注册验证 + 9项功能修复与优化
【认证系统】
- 新增邮箱验证码注册/登录流程 (sendEmailCode / verifyEmail / forgotPassword / resetPassword)
- register-email 现在需要验证码
- 服务端新增 email_verification_codes 表 + patch-email-verification.js
- App.tsx 登录后 emailVerified 检查提醒
- keyServerClient token 显式传递修复 401 错误

【电商模块】
- 自动推进: 策划完成后自动生成分镜图/视频
- 模特图选项 (性别/年龄/种族/体型/场景) 注入 AI 提示词
- 任务持久化指纹修复 (图片数量替代 blob URL)
- 新增「视频换装」入口 (happyhorse-1.0-video-edit)

【剧本评分】
- 新增 .docx/.doc Word 文档支持 (ZIP解压+XML提取)
- 历史记录支持点击查看/恢复评测结果

【画布】
- ReactFlow 节点禁止内置拖拽避免冲突
- 连接线拖拽弹窗优化 (预览线不消失, 弹窗跟踪鼠标)

【页面修复】
- 首页轮播图改为 aspect-ratio: 16/9 解决尺寸问题
- 资产库新增悬停删除按钮
- scriptEvalClient 改用服务端 /api/ai/chat 端点
- TokenUsagePage 未登录跳过 API 调用
2026-06-03 20:19:07 +08:00

246 lines
4.8 KiB
CSS

/* Asset library page rules move here as they are retired from legacy-pages.css. */
.asset-context-menu {
position: fixed;
z-index: 200;
min-width: 140px;
padding: 4px;
background: #1a1a1a;
border: 1px solid #333;
border-radius: 8px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
}
.asset-context-menu button {
display: flex;
align-items: center;
gap: 8px;
width: 100%;
padding: 8px 12px;
border: 0;
border-radius: 6px;
background: transparent;
color: #ef4444;
font-size: 13px;
cursor: pointer;
transition: background 0.15s;
}
.asset-context-menu button:hover {
background: rgba(239, 68, 68, 0.1);
}
.asset-preview-modal {
position: fixed;
inset: 0;
z-index: 140;
display: grid;
place-items: center;
padding: 32px;
color: var(--fg-body);
}
.asset-preview-modal__backdrop {
position: absolute;
inset: 0;
border: 0;
background: rgba(0, 0, 0, 0.72);
cursor: zoom-out;
backdrop-filter: none;
animation: backdrop-in 150ms ease both;
}
.asset-preview-modal__panel {
position: relative;
z-index: 1;
display: grid;
grid-template-rows: auto minmax(0, 1fr) auto;
width: min(1120px, calc(100vw - 64px));
animation: scale-in 200ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
max-height: min(820px, calc(100vh - 64px));
overflow: hidden;
border: 1px solid rgba(var(--accent-rgb), 0.22);
border-radius: 18px;
background: color-mix(in srgb, var(--bg-panel) 96%, transparent);
box-shadow: none;
}
.asset-preview-modal__head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
min-height: 58px;
padding: 12px 14px 12px 18px;
border-bottom: 1px solid var(--border-weak);
background: rgba(255, 255, 255, 0.035);
}
.asset-preview-modal__head > div {
display: grid;
gap: 4px;
min-width: 0;
}
.asset-preview-modal__head strong,
.asset-preview-modal__head span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.asset-preview-modal__head strong {
color: var(--fg-body);
font-size: 15px;
font-weight: 1000;
}
.asset-preview-modal__head span {
color: var(--fg-muted);
font-size: 12px;
font-weight: 800;
}
.asset-preview-modal__close {
display: inline-grid;
place-items: center;
width: 36px;
min-width: 36px;
height: 36px;
border: 1px solid var(--border-subtle);
border-radius: 10px;
background: var(--bg-inset);
color: var(--fg-muted);
cursor: pointer;
transition:
background 160ms ease,
border-color 160ms ease,
color 160ms ease,
transform 160ms ease;
}
.asset-preview-modal__close:hover {
border-color: rgba(var(--accent-rgb), 0.44);
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
transform: translateY(-1px);
}
.asset-preview-modal__body {
display: grid;
place-items: center;
min-height: 0;
padding: 20px;
background: var(--bg-shell);
}
.asset-preview-modal__body img,
.asset-preview-modal__body video {
display: block;
width: auto;
max-width: 100%;
height: auto;
max-height: calc(100vh - 210px);
border-radius: 12px;
object-fit: contain;
box-shadow: none;
}
.asset-preview-modal__empty {
display: grid;
justify-items: center;
gap: 10px;
color: var(--fg-muted);
text-align: center;
}
.asset-preview-modal__empty .anticon {
color: var(--accent);
font-size: 32px;
}
.asset-preview-modal__empty strong {
color: var(--fg-body);
font-size: 15px;
}
.asset-preview-modal__meta {
display: flex;
flex-wrap: wrap;
gap: 8px;
padding: 12px 18px;
border-top: 1px solid var(--border-weak);
background: rgba(255, 255, 255, 0.035);
}
.asset-preview-modal__meta span {
display: inline-flex;
align-items: center;
min-height: 24px;
padding: 0 9px;
border-radius: 999px;
background: var(--bg-inset);
color: var(--fg-soft);
font-size: 12px;
font-weight: 800;
}
.asset-card--desktop {
cursor: zoom-in;
}
.asset-card-wrapper {
position: relative;
display: inline-block;
}
.asset-card__delete {
position: absolute;
top: 6px;
right: 6px;
z-index: 2;
display: none;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
border: 0;
border-radius: 6px;
background: var(--bg-panel);
color: var(--fg-muted);
cursor: pointer;
font-size: 14px;
opacity: 0.85;
transition: opacity 150ms, color 150ms;
}
.asset-card-wrapper:hover .asset-card__delete {
display: flex;
}
.asset-card__delete:hover {
opacity: 1;
color: var(--fg-danger);
}
@media (max-width: 720px) {
.asset-preview-modal {
padding: 14px;
}
.asset-preview-modal__panel {
width: calc(100vw - 28px);
max-height: calc(100vh - 28px);
border-radius: 14px;
}
.asset-preview-modal__body {
padding: 12px;
}
.asset-preview-modal__body img,
.asset-preview-modal__body video {
max-height: calc(100vh - 190px);
}
}