fix(viral-video): 推翻暗色主题改回浅色紫色主题 + 6项UI调整 #2137

Merged
xiaoxia merged 1 commits from fix/2041-v16-light-purple into develop 2026-10-02 11:08:51 +08:00
2 changed files with 341 additions and 314 deletions
File diff suppressed because it is too large Load Diff
@@ -151,7 +151,18 @@ const TARGET_CUSTOMERS = [
"都市蓝领",
"都市银发",
]
const PERSONAS = ["亲切邻家姐姐", "专业顾问", "搞笑段子手", "真实测评博主", "闺蜜种草", "行业专家"]
const PERSONAS = [
"通用个人IP",
"老板型IP",
"专家型IP",
"顾问型IP",
"创始人IP",
"创业者IP",
"从业者经验派",
"避坑顾问型",
"知识科普型",
"测评种草型",
]
const STRUCTURES = [
"反差破局+亮明观点+还原现状",
"痛点场景植入+给出通关秘籍",
@@ -190,8 +201,11 @@ const QUALITY_OPTIONS = [
{ v: "1080p", label: "1080p(高清)" },
]
const UPSCALE_OPTIONS = [
{ v: "关闭", label: "关闭" },
{ v: "开启", label: "开启" },
{ v: "default", label: "默认" },
{ v: "sd", label: "普清" },
{ v: "hd", label: "高清" },
{ v: "uhd", label: "超清" },
{ v: "omnipotent", label: "全能" },
]
const VOICE_TIPS =
"支持 MP3/WAV/M4A/AAC/OGG 格式,最大 10MB,时长 ≤30 秒。建议清晰人声、无背景音乐、环境安静;录音请保持距麦克风 15-20cm,音量适中。"
@@ -358,7 +372,7 @@ const emptyTask = (id: string, title: string): TabTask => ({
videoRatio: "9:16",
videoModel: "seedance-2.5",
quality: "480p",
upscale: "关闭",
upscale: "default",
uiStep: "step1_upload",
imageAnalysis: null,
storyboard: null,
@@ -975,7 +989,7 @@ const ViralVideoPage: React.FC = () => {
return (
<div className="vv-recog">
<div className="vv-recog-title">
<LoadingOutlined style={{ color: "#22d3ee", marginRight: 6 }} />
<LoadingOutlined style={{ color: "#7c3aed", marginRight: 6 }} />
识别描述汇览
</div>
<div className="vv-muted">AI 正在识别商品特征…</div>
@@ -1355,7 +1369,7 @@ const ViralVideoPage: React.FC = () => {
{/* 完整口播稿(可折叠) */}
<h4 className="vv-sb-h">
<button className="vv-sb-doc-collapse" onClick={() => setVoOpen(!voOpen)} type="button">
<SoundOutlined style={{ color: "#22d3ee", marginRight: 6 }} />
<SoundOutlined style={{ color: "#7c3aed", marginRight: 6 }} />
完整口播稿(TTS 合成使用)
<span className={`vv-sb-caret ${voOpen ? "open" : ""}`}>▾</span>
</button>
@@ -1676,7 +1690,7 @@ const ViralVideoPage: React.FC = () => {
/>
{task.refAudio && (
<div className="vv-selected-audio">
<SoundOutlined style={{ color: "#22d3ee", marginRight: 6 }} />
<SoundOutlined style={{ color: "#7c3aed", marginRight: 6 }} />
<span style={{ flex: 1 }}>已选:{task.refAudio.name}</span>
<button
className="vv-link-btn"
@@ -1801,12 +1815,19 @@ const ViralVideoPage: React.FC = () => {
</button>
))}
</div>
{task.fusionLevel === "user_primary" && (
{(task.fusionLevel === "ai_polish" || task.fusionLevel === "user_primary") && (
<div className="vv-form-row">
<label className="vv-label">写下你的文案/草稿</label>
<label className="vv-label">
{task.fusionLevel === "ai_polish" ? "写下你的文案草稿" : "写下你的文案/草稿"}
</label>
<textarea
key={task.fusionLevel}
className="vv-textarea"
placeholder="请输入你想要的原始文案,AI 将严格保留你的表达"
placeholder={
task.fusionLevel === "ai_polish"
? "请输入你的文案草稿,AI将在此基础上润色优化..."
: "请输入你想要的原始文案,AI将严格保留你的表达..."
}
value={task.userCopy}
onChange={(e) => setTask({ userCopy: e.target.value })}
disabled={!canEditStep2}
@@ -1857,11 +1878,11 @@ const ViralVideoPage: React.FC = () => {
<Select
className="vv-select vv-select-purple"
style={{ width: "100%" }}
placeholder="请选择人设"
placeholder="请选择人设类型"
optionFilterProp="children"
value={task.persona || undefined}
onChange={(v) => setTask({ persona: v })}
options={PERSONAS.map((i) => ({ value: i, label: i }))}
allowClear
disabled={!canEditStep2}
/>
</div>
@@ -2036,7 +2057,7 @@ const ViralVideoPage: React.FC = () => {
) : task.uiStep === "step3_generating" ? (
<div className="vv-preview-placeholder">
<div className="ph-icon">
<LoadingOutlined style={{ fontSize: 36, color: "#22d3ee" }} />
<LoadingOutlined style={{ fontSize: 36, color: "#7c3aed" }} />
</div>
<div className="ph-txt">
AI 正在生成视频中…