{audioBuffer ? (
) : (
diff --git a/components/editor/ZoomControls.tsx b/components/editor/ZoomControls.tsx
new file mode 100644
index 0000000..592b3de
--- /dev/null
+++ b/components/editor/ZoomControls.tsx
@@ -0,0 +1,106 @@
+'use client';
+
+import * as React from 'react';
+import { ZoomIn, ZoomOut, Maximize2, ChevronsUpDown, ChevronsLeftRight } from 'lucide-react';
+import { Button } from '@/components/ui/Button';
+import { Slider } from '@/components/ui/Slider';
+import { cn } from '@/lib/utils/cn';
+
+export interface ZoomControlsProps {
+ zoom: number;
+ onZoomChange: (zoom: number) => void;
+ amplitudeScale: number;
+ onAmplitudeScaleChange: (scale: number) => void;
+ onZoomIn: () => void;
+ onZoomOut: () => void;
+ onFitToView: () => void;
+ className?: string;
+}
+
+export function ZoomControls({
+ zoom,
+ onZoomChange,
+ amplitudeScale,
+ onAmplitudeScaleChange,
+ onZoomIn,
+ onZoomOut,
+ onFitToView,
+ className,
+}: ZoomControlsProps) {
+ return (
+
+ {/* Horizontal Zoom */}
+
+
+
+ {zoom.toFixed(1)}x
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* Vertical (Amplitude) Zoom */}
+
+
+
+ {amplitudeScale.toFixed(1)}x
+
+
+
+
+
+ );
+}