diff --git a/apps/web/src/pages/editing-planner/components/SubtitleStylePanel.tsx b/apps/web/src/pages/editing-planner/components/SubtitleStylePanel.tsx old mode 100644 new mode 100755 index 017566089..18511651d --- a/apps/web/src/pages/editing-planner/components/SubtitleStylePanel.tsx +++ b/apps/web/src/pages/editing-planner/components/SubtitleStylePanel.tsx @@ -1,18 +1,16 @@ -/** - * 字幕样式配置面板 — Drawer 形式 - * 字幕开关(手动 / ASR 自动识别)、字体大小、颜色、描边/阴影、位置、ASR 语言 - */ import React from "react" import { Drawer, Slider, ColorPicker, Select } from "antd" import type { Color } from "antd/es/color-picker" import type { SubtitleStyleConfig } from "@/pages/editing-planner/types/subtitle" import { - POSITION_OPTIONS, FONT_OPTIONS, ANIMATION_OPTIONS, ASR_LANGUAGE_OPTIONS, } from "@/pages/editing-planner/constants/subtitleStyle" import SubtitlePreview from "./subtitle-style/SubtitlePreview" +import { SubtitleModeSwitch } from "./subtitle-style/SubtitleModeSwitch" +import { SubtitlePositionSelector } from "./subtitle-style/SubtitlePositionSelector" +import { SubtitleEffectButtons } from "./subtitle-style/SubtitleEffectButtons" interface SubtitleStylePanelProps { open: boolean @@ -40,7 +38,6 @@ const SubtitleStylePanel: React.FC = ({ onClose={onClose} className="subtitle-style-drawer" > - {/* ── 字幕开关 ── */}
启用字幕 @@ -55,26 +52,11 @@ const SubtitleStylePanel: React.FC = ({ {config.enabled && ( <> - {/* ── 模式切换 ── */}
-
- - -
+ update({ mode })} />
- {/* ── ASR 语言(仅 ASR 模式) ── */} {config.mode === "asr" && (
@@ -88,7 +70,6 @@ const SubtitleStylePanel: React.FC = ({
)} - {/* ── 字体大小 ── */}
- {/* ── 字体颜色 ── */}
@@ -113,7 +93,6 @@ const SubtitleStylePanel: React.FC = ({
- {/* ── 字体 ── */}
= ({ />
- {/* ── 预览 ── */} )} diff --git a/apps/web/src/pages/editing-planner/components/subtitle-style/SubtitleEffectButtons.tsx b/apps/web/src/pages/editing-planner/components/subtitle-style/SubtitleEffectButtons.tsx new file mode 100755 index 000000000..d12d94991 --- /dev/null +++ b/apps/web/src/pages/editing-planner/components/subtitle-style/SubtitleEffectButtons.tsx @@ -0,0 +1,32 @@ +import React from "react" + +interface SubtitleEffectButtonsProps { + stroke: boolean + shadow: boolean + onStrokeChange: (enabled: boolean) => void + onShadowChange: (enabled: boolean) => void +} + +export const SubtitleEffectButtons: React.FC = ({ + stroke, + shadow, + onStrokeChange, + onShadowChange, +}) => { + return ( +
+ + +
+ ) +} diff --git a/apps/web/src/pages/editing-planner/components/subtitle-style/SubtitleModeSwitch.tsx b/apps/web/src/pages/editing-planner/components/subtitle-style/SubtitleModeSwitch.tsx new file mode 100755 index 000000000..a1c5a9bd4 --- /dev/null +++ b/apps/web/src/pages/editing-planner/components/subtitle-style/SubtitleModeSwitch.tsx @@ -0,0 +1,25 @@ +import React from "react" + +interface SubtitleModeSwitchProps { + mode: "manual" | "asr" + onModeChange: (mode: "manual" | "asr") => void +} + +export const SubtitleModeSwitch: React.FC = ({ mode, onModeChange }) => { + return ( +
+ + +
+ ) +} diff --git a/apps/web/src/pages/editing-planner/components/subtitle-style/SubtitlePositionSelector.tsx b/apps/web/src/pages/editing-planner/components/subtitle-style/SubtitlePositionSelector.tsx new file mode 100755 index 000000000..38a07c11b --- /dev/null +++ b/apps/web/src/pages/editing-planner/components/subtitle-style/SubtitlePositionSelector.tsx @@ -0,0 +1,27 @@ +import React from "react" +import type { SubtitleStyleConfig } from "@/pages/editing-planner/types/subtitle" +import { POSITION_OPTIONS } from "@/pages/editing-planner/constants/subtitleStyle" + +interface SubtitlePositionSelectorProps { + position: SubtitleStyleConfig["position"] + onPositionChange: (position: SubtitleStyleConfig["position"]) => void +} + +export const SubtitlePositionSelector: React.FC = ({ + position, + onPositionChange, +}) => { + return ( +
+ {POSITION_OPTIONS.map((opt) => ( + + ))} +
+ ) +} diff --git a/apps/web/src/pages/voice-materials/hooks/useVoiceMaterials/useVoiceMaterialActions.ts b/apps/web/src/pages/voice-materials/hooks/useVoiceMaterials/useVoiceMaterialActions.ts index 37dbb1dd5..c8746a3f4 100755 --- a/apps/web/src/pages/voice-materials/hooks/useVoiceMaterials/useVoiceMaterialActions.ts +++ b/apps/web/src/pages/voice-materials/hooks/useVoiceMaterials/useVoiceMaterialActions.ts @@ -1,5 +1,5 @@ import { useState } from "react" -import { type VoiceMaterial } from "../../../types" +import { type VoiceMaterial } from "../../types" import { type AssetLibraryItem } from "@/api/assets" import { useVoiceUpload } from "./actions/useVoiceUpload" import { useVoiceEdit } from "./actions/useVoiceEdit" diff --git a/apps/web/src/test/pages/editing-planner/smoke.test.tsx b/apps/web/src/test/pages/editing-planner/smoke.test.tsx index c4d3f267c..d5826349e 100644 --- a/apps/web/src/test/pages/editing-planner/smoke.test.tsx +++ b/apps/web/src/test/pages/editing-planner/smoke.test.tsx @@ -65,6 +65,9 @@ import "@/pages/editing-planner/components/filter/FilterPresetGrid" import "@/pages/editing-planner/components/filter/FilterManualAdjust" import "@/pages/editing-planner/components/intro-outro/IntroOutroBlock" import "@/pages/editing-planner/components/subtitle-style/SubtitlePreview" +import "@/pages/editing-planner/components/subtitle-style/SubtitleModeSwitch" +import "@/pages/editing-planner/components/subtitle-style/SubtitlePositionSelector" +import "@/pages/editing-planner/components/subtitle-style/SubtitleEffectButtons" import "@/pages/editing-planner/components/tts/VoiceSelector" import "@/pages/editing-planner/components/tts/TtsSlider" import "@/pages/editing-planner/components/watermark/WatermarkTypeTabs"