feat(web): P0-5 剪辑计划编辑器V21第五波 - 细节打磨
Deploy / Staging E2E Tests (push) Has been skipped
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
Deploy / Deploy Staging (push) Failing after 85h24m16s
CI/CD Pipeline / Frontend Lint (push) Failing after 85h24m45s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 85h24m53s
Deploy / Staging E2E Tests (push) Has been skipped
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
Deploy / Deploy Staging (push) Failing after 85h24m16s
CI/CD Pipeline / Frontend Lint (push) Failing after 85h24m45s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 85h24m53s
- 左侧面板:加标题栏 + 搜索/筛选区域底部分隔线 - 筛选chip:字号12→10px,激活态改用primary-soft背景 - 模板卡片:圆角14→12px,hover阴影调优 - 模式按钮:背景#f8fafc→#fff,圆角14→10px,字号12→10px - 封面方案按钮:从矩形改为胶囊样式 - 片段轨道:背景色#f8fafc→#fff - 顶栏按钮:ghost样式对齐V21(白底+深灰字),primary阴影加强 - 右侧面板:section标题11px大写样式,section加padding+底部分隔线 - 搜索图标位置适配新的padding
This commit is contained in:
@@ -47,3 +47,4 @@ build/
|
||||
# Tracker temp files
|
||||
tracker_tasks.json
|
||||
|
||||
frontend-v21-ui-prototype-final.html
|
||||
|
||||
@@ -92,12 +92,13 @@
|
||||
.ep-btn-primary {
|
||||
background: linear-gradient(135deg, #6366f1, #4f46e5);
|
||||
color: #fff;
|
||||
box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3);
|
||||
box-shadow: 0 14px 26px rgba(79, 70, 229, 0.22);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.ep-btn-primary:hover {
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 18px 34px rgba(79, 70, 229, 0.28);
|
||||
}
|
||||
|
||||
.ep-btn-primary:active {
|
||||
@@ -112,15 +113,16 @@
|
||||
}
|
||||
|
||||
.ep-btn-secondary {
|
||||
background: var(--bg-secondary, #f8fafc);
|
||||
color: var(--text-secondary, #64748b);
|
||||
background: var(--bg-primary, #ffffff);
|
||||
color: #475569;
|
||||
border: 1px solid var(--line, #e2e8f0);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.ep-btn-secondary:hover {
|
||||
background: var(--primary-soft, #eef2ff);
|
||||
border-color: var(--primary, #6366f1);
|
||||
color: var(--primary, #6366f1);
|
||||
border-color: #c7d2fe;
|
||||
color: #4338ca;
|
||||
background: #f8faff;
|
||||
}
|
||||
|
||||
.ep-btn-secondary:active {
|
||||
@@ -184,34 +186,34 @@
|
||||
|
||||
.ep-mode-btn {
|
||||
position: relative;
|
||||
height: 44px;
|
||||
padding: 0 16px;
|
||||
background: var(--bg-secondary, #f8fafc);
|
||||
padding: 8px 14px;
|
||||
background: var(--bg-primary, #ffffff);
|
||||
border: 1px solid var(--line, #e2e8f0);
|
||||
color: var(--text-secondary, #64748b);
|
||||
font-size: 12px;
|
||||
font-size: 10px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 2px;
|
||||
border-radius: var(--radius-sm, 14px);
|
||||
transition: all 0.25s ease;
|
||||
min-width: 72px;
|
||||
border-radius: 10px;
|
||||
transition: all 0.2s ease;
|
||||
min-width: 64px;
|
||||
}
|
||||
|
||||
.ep-mode-btn:hover {
|
||||
border-color: var(--primary, #6366f1);
|
||||
color: var(--primary, #6366f1);
|
||||
background: var(--primary-soft, #eef2ff);
|
||||
border-color: var(--primary-light, #a5b4fc);
|
||||
background: var(--primary-soft, #f8faff);
|
||||
}
|
||||
|
||||
.ep-mode-btn.active {
|
||||
border-color: var(--primary, #6366f1);
|
||||
color: var(--primary, #6366f1);
|
||||
background: var(--primary-soft, #eef2ff);
|
||||
box-shadow: 0 2px 8px rgba(99, 102, 241, 0.15);
|
||||
}
|
||||
|
||||
.ep-mode-btn.active .ep-mode-label {
|
||||
color: var(--primary, #6366f1);
|
||||
}
|
||||
|
||||
.ep-mode-icon {
|
||||
@@ -242,10 +244,40 @@
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* 左栏标题 */
|
||||
.ep-left-header {
|
||||
padding: 12px 14px;
|
||||
border-bottom: 1px solid var(--line, #e2e8f0);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.ep-left-title {
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
color: var(--text-secondary, #64748b);
|
||||
}
|
||||
|
||||
.ep-left-back-btn {
|
||||
font-size: 10px;
|
||||
color: var(--text-tertiary, #94a3b8);
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.ep-left-back-btn:hover {
|
||||
color: var(--primary, #6366f1);
|
||||
}
|
||||
|
||||
/* 搜索 */
|
||||
.ep-search-wrap {
|
||||
padding: 12px 16px 8px;
|
||||
padding: 10px 12px;
|
||||
border-bottom: 1px solid var(--bg-secondary, #f1f5f9);
|
||||
position: relative;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.ep-search-input {
|
||||
@@ -273,7 +305,7 @@
|
||||
|
||||
.ep-search-icon {
|
||||
position: absolute;
|
||||
left: 28px;
|
||||
left: 24px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: var(--text-tertiary, #94a3b8);
|
||||
@@ -285,39 +317,41 @@
|
||||
.ep-filter-chips {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
padding: 0 16px 12px;
|
||||
padding: 8px 12px;
|
||||
border-bottom: 1px solid var(--bg-secondary, #f1f5f9);
|
||||
flex-wrap: wrap;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.ep-filter-chip {
|
||||
padding: 5px 12px;
|
||||
padding: 4px 10px;
|
||||
border-radius: var(--radius-full, 9999px);
|
||||
font-size: 12px;
|
||||
font-size: 10px;
|
||||
background: var(--bg-secondary, #f8fafc);
|
||||
color: var(--text-secondary, #64748b);
|
||||
color: var(--text-tertiary, #94a3b8);
|
||||
border: 1px solid var(--border-color, #e2e8f0);
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
font-weight: 500;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.ep-filter-chip:hover {
|
||||
border-color: var(--primary, #6366f1);
|
||||
color: var(--primary, #6366f1);
|
||||
background: var(--primary-soft, #eef2ff);
|
||||
color: var(--text-secondary, #64748b);
|
||||
}
|
||||
|
||||
.ep-filter-chip.active {
|
||||
background: var(--primary, #6366f1);
|
||||
color: #fff;
|
||||
border-color: var(--primary, #6366f1);
|
||||
color: var(--primary, #6366f1);
|
||||
background: var(--primary-soft, #eef2ff);
|
||||
}
|
||||
|
||||
/* 模板列表 */
|
||||
.ep-template-list {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
padding: 0 16px 16px;
|
||||
padding: 10px 12px;
|
||||
}
|
||||
|
||||
.ep-template-list::-webkit-scrollbar {
|
||||
@@ -332,7 +366,7 @@
|
||||
.ep-template-card {
|
||||
background: var(--bg-primary, #ffffff);
|
||||
border: 1px solid var(--border-color, #e2e8f0);
|
||||
border-radius: var(--radius-sm, 14px);
|
||||
border-radius: 12px;
|
||||
padding: 12px;
|
||||
margin-bottom: 8px;
|
||||
cursor: pointer;
|
||||
@@ -340,10 +374,8 @@
|
||||
}
|
||||
|
||||
.ep-template-card:hover {
|
||||
border-color: var(--primary, #6366f1);
|
||||
background: var(--primary-soft, #eef2ff);
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 12px rgba(99, 102, 241, 0.1);
|
||||
border-color: var(--primary-light, #a5b4fc);
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
|
||||
.ep-template-card.active {
|
||||
@@ -601,30 +633,30 @@
|
||||
}
|
||||
|
||||
.ep-cover-tag {
|
||||
height: 32px;
|
||||
padding: 0 14px;
|
||||
border-radius: var(--radius-xs, 8px);
|
||||
font-size: 12px;
|
||||
padding: 6px 12px;
|
||||
border-radius: var(--radius-full, 9999px);
|
||||
font-size: 10px;
|
||||
background: var(--bg-secondary, #f8fafc);
|
||||
color: var(--text-secondary, #64748b);
|
||||
color: var(--text-tertiary, #94a3b8);
|
||||
border: 1px solid var(--border-color, #e2e8f0);
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
white-space: nowrap;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 500;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.ep-cover-tag:hover {
|
||||
border-color: var(--primary, #6366f1);
|
||||
color: var(--primary, #6366f1);
|
||||
background: var(--primary-soft, #eef2ff);
|
||||
}
|
||||
|
||||
.ep-cover-tag.active {
|
||||
background: var(--primary, #6366f1);
|
||||
color: #fff;
|
||||
background: var(--primary-soft, #eef2ff);
|
||||
color: var(--primary, #6366f1);
|
||||
border-color: var(--primary, #6366f1);
|
||||
}
|
||||
|
||||
@@ -732,11 +764,11 @@
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
gap: 12px;
|
||||
padding: 12px 16px;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
background: var(--bg-secondary, #f8fafc);
|
||||
background: var(--bg-primary, #ffffff);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@@ -909,19 +941,21 @@
|
||||
|
||||
/* 设置区块 */
|
||||
.ep-settings-section {
|
||||
margin-bottom: 16px;
|
||||
padding: 0 16px;
|
||||
padding: 14px;
|
||||
border-bottom: 1px solid var(--bg-secondary, #f1f5f9);
|
||||
}
|
||||
|
||||
.ep-section-title {
|
||||
font-size: 13px;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
color: var(--text-primary, #1e293b);
|
||||
color: var(--text-secondary, #64748b);
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 16px;
|
||||
margin-top: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
letter-spacing: 0.3px;
|
||||
}
|
||||
|
||||
.ep-section-icon {
|
||||
|
||||
@@ -664,7 +664,7 @@ const EditingPlanner: React.FC = () => {
|
||||
onClick={() => handleModeChange(m.key)}
|
||||
>
|
||||
<span className="ep-mode-icon">{m.icon}</span>
|
||||
<span>{m.label}</span>
|
||||
<span className="ep-mode-label">{m.label}</span>
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
|
||||
Regular → Executable
+5
@@ -31,6 +31,11 @@ const MediaPanel: React.FC<MediaPanelProps> = ({
|
||||
}) => {
|
||||
return (
|
||||
<div className="ep-left-panel">
|
||||
{/* 标题栏 */}
|
||||
<div className="ep-left-header">
|
||||
<span className="ep-left-title">📋 已保存模板</span>
|
||||
</div>
|
||||
|
||||
{/* 搜索 */}
|
||||
<div className="ep-search-wrap ep-media-panel-inner">
|
||||
<span className="ep-search-icon">🔍</span>
|
||||
|
||||
Reference in New Issue
Block a user