From a6626beb3249e04f5ecd6e1999b7a3b116410ba5 Mon Sep 17 00:00:00 2001 From: ludan <251918489@qq.com> Date: Wed, 10 Jun 2026 17:54:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=9A=E9=A1=B5=E9=9D=A2UI=E6=89=93?= =?UTF-8?q?=E7=A3=A8=20=E2=80=94=20=E8=AE=BE=E7=BD=AE=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E3=80=81=E7=8A=B6=E6=80=81=E5=8F=8D=E9=A6=88=E4=B8=8E=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 本次更新对多个功能页面进行了系统性的 UI/UX 打磨,统一了交互模式并补充了缺失的状态反馈。 ## 新增功能 - WorkbenchPage: 图片提示词案例区域新增加载骨架屏、错误回退、空数据三种状态展示 - CharacterMixPage: 新增左侧设置面板(驱动提示词、图像检测开关、水印开关),支持清除已上传的人物图/参考视频 - DigitalHumanPage: 新增左侧设置面板(提示词输入、去水印/保留原声开关),支持清除已上传的人像/音频,增加取消生成按钮 - ImageWorkbenchPage / ResolutionUpscalePage: 新增参数设置面板和资产清除交互 - MorePage: 新增页面入口 ## UI 优化 - 统一 Toggle 开关组件: 所有设置页面采用一致的 .studio-toggle 交互模式 - 资产清除: 各上传区域新增清除按钮,含二次确认和提示反馈 - 生成按钮: 统一为带图标的 .studio-generate-btn,增加 disabled/loading 状态 - ConversationSidebar / ProjectSidebar: 侧边栏交互细节优化 ## 样式升级 - image-workbench.css: 大幅扩展样式 (+1900 行),覆盖设置面板、上传区、结果展示等 - workbench.css: 新增 666 行样式,含骨架屏动画、案例卡片网格、状态占位等 - subtitle-removal.css: 补充设置面板样式 --- src/components/BeforeAfterCompare.tsx | 7 +- .../character-mix/CharacterMixPage.tsx | 193 +- .../digital-human/DigitalHumanPage.tsx | 197 +- src/features/home/HomePage.tsx | 20 +- .../image-workbench/ImageWorkbenchPage.tsx | 38 +- src/features/more/MorePage.tsx | 2 + .../ResolutionUpscalePage.tsx | 24 +- .../subtitle-removal/SubtitleRemovalPage.tsx | 2 +- .../WatermarkRemovalPage.tsx | 2 +- .../workbench/ConversationSidebar.tsx | 14 + src/features/workbench/ProjectSidebar.tsx | 23 +- src/features/workbench/WorkbenchPage.tsx | 70 +- src/styles/pages/image-workbench.css | 1874 ++++++++++++++++- src/styles/pages/subtitle-removal.css | 68 +- src/styles/pages/workbench.css | 666 ++++++ 15 files changed, 2949 insertions(+), 251 deletions(-) diff --git a/src/components/BeforeAfterCompare.tsx b/src/components/BeforeAfterCompare.tsx index 0a67142..18ebcda 100644 --- a/src/components/BeforeAfterCompare.tsx +++ b/src/components/BeforeAfterCompare.tsx @@ -8,6 +8,7 @@ interface BeforeAfterCompareProps { sourceAlt?: string; resultAlt?: string; className?: string; + aspectRatio?: string; onSourceLoad?: (width: number, height: number) => void; } @@ -26,6 +27,7 @@ export default function BeforeAfterCompare({ sourceAlt = "原图", resultAlt = "结果", className = "", + aspectRatio, onSourceLoad, }: BeforeAfterCompareProps) { const stageRef = useRef(null); @@ -43,7 +45,10 @@ export default function BeforeAfterCompare({
diff --git a/src/features/character-mix/CharacterMixPage.tsx b/src/features/character-mix/CharacterMixPage.tsx index 6a5121a..27d777b 100644 --- a/src/features/character-mix/CharacterMixPage.tsx +++ b/src/features/character-mix/CharacterMixPage.tsx @@ -281,6 +281,94 @@ function CharacterMixPage({ } }; + const clearCharacterAsset = () => { + if (characterPreview) URL.revokeObjectURL(characterPreview); + setCharacterFile(""); + setCharacterPreview(""); + setCharacterDataUrl(""); + setFaceHint(null); + if (characterInputRef.current) characterInputRef.current.value = ""; + setNotice("已移除人物图"); + }; + + const clearReferenceVideo = () => { + if (videoPreview) URL.revokeObjectURL(videoPreview); + setVideoFile(""); + setVideoPreview(""); + setVideoDataUrl(""); + if (videoInputRef.current) videoInputRef.current.value = ""; + setNotice("已移除参考视频"); + }; + + const characterMixSettingsPanel = ( +
+
+ 迁移设置 +
+
+
+
驱动提示词
+