import React from 'react' import { Plus, Gauge, Download, Maximize2, Sparkles, FileUp, FileDown, ZoomOut, ZoomIn } from 'lucide-react' import { Button } from '../../components/ui/button' import { Tooltip } from '../../components/ui/tooltip' import type { TimelineClip, Track, SubtitleClip } from '../../types/project-model' interface TimelineToolbarProps { selectedClip: TimelineClip | null updateClip: (id: string, updates: Partial) => void getMaxClipDuration: (clip: TimelineClip) => number setShowExportModal: (v: boolean) => void handleResetLayout: () => void canUseIcLora: boolean onICLoraClip: (clip: TimelineClip) => void tracks: Track[] subtitleFileInputRef: React.RefObject handleImportSrt: (e: React.ChangeEvent) => void handleExportSrt: () => void subtitles: SubtitleClip[] zoom: number setZoom: (z: number) => void getMinZoom: () => number centerOnPlayheadRef: React.MutableRefObject handleFitToView: () => void } export function TimelineToolbar({ selectedClip, updateClip, getMaxClipDuration, setShowExportModal, handleResetLayout, canUseIcLora, onICLoraClip, tracks, subtitleFileInputRef, handleImportSrt, handleExportSrt, subtitles, zoom, setZoom, getMinZoom, centerOnPlayheadRef, handleFitToView, }: TimelineToolbarProps) { return (
{selectedClip && ( <>
)}
{canUseIcLora && ( )} {/* Subtitle import/export */} {tracks.some(t => t.type === 'subtitle') && ( <>
)} {/* Spacer */}
{/* Zoom slider bar */}
{ centerOnPlayheadRef.current = true; setZoom(Math.max(getMinZoom(), +(parseInt(e.target.value) / 100).toFixed(2))) }} className="w-28 h-1 accent-blue-500 cursor-pointer" title={`Zoom: ${Math.round(zoom * 100)}%`} /> {Math.round(zoom * 100)}%
) }