diff --git a/src/components/video-editor/SettingsPanel.tsx b/src/components/video-editor/SettingsPanel.tsx
index 5cac573..1ffa0f4 100644
--- a/src/components/video-editor/SettingsPanel.tsx
+++ b/src/components/video-editor/SettingsPanel.tsx
@@ -54,13 +54,19 @@ import type {
CropRegion,
FigureData,
PlaybackSpeed,
+ Rotation3DPreset,
WebcamLayoutPreset,
WebcamMaskShape,
WebcamSizePreset,
ZoomDepth,
ZoomFocusMode,
} from "./types";
-import { DEFAULT_WEBCAM_SIZE_PRESET, MAX_PLAYBACK_SPEED, SPEED_OPTIONS } from "./types";
+import {
+ DEFAULT_WEBCAM_SIZE_PRESET,
+ MAX_PLAYBACK_SPEED,
+ ROTATION_3D_PRESET_ORDER,
+ SPEED_OPTIONS,
+} from "./types";
function CustomSpeedInput({
value,
@@ -168,6 +174,8 @@ interface SettingsPanelProps {
hasCursorTelemetry?: boolean;
selectedZoomId?: string | null;
onZoomDelete?: (id: string) => void;
+ selectedZoomRotationPreset?: Rotation3DPreset | null;
+ onZoomRotationPresetChange?: (preset: Rotation3DPreset | null) => void;
selectedTrimId?: string | null;
onTrimDelete?: (id: string) => void;
shadowIntensity?: number;
@@ -258,6 +266,8 @@ export function SettingsPanel({
hasCursorTelemetry = false,
selectedZoomId,
onZoomDelete,
+ selectedZoomRotationPreset,
+ onZoomRotationPresetChange,
selectedTrimId,
onTrimDelete,
shadowIntensity = 0,
@@ -647,6 +657,36 @@ export function SettingsPanel({
)}
)}
+ {zoomEnabled && (
+
+
+ {t("zoom.threeD.title")}
+
+
+ {ROTATION_3D_PRESET_ORDER.map((preset) => {
+ const isActive = selectedZoomRotationPreset === preset;
+ return (
+
+ );
+ })}
+
+
+ )}
+
{zoomEnabled && (