/** * TrackControlsPanel - Левая панель управления треками * * Компонент для профессионального управления треками: * - Отображение списка треков * - Добавление новых треков * - Управление видимостью и блокировкой */ import { Eye, EyeOff, Image, Lock, Music, Type, Unlock, Video, Volume2 } from "lucide-react" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable" import { cn } from "@/lib/utils" import { useTimeline } from "../hooks/use-timeline" import { useTracks } from "../hooks/use-tracks" import { PersonsPanel } from "./persons-panel" // Типы треков с иконками и цветами const TRACK_TYPES = [ { type: "video" as const, label: "Видео", icon: Video, color: "bg-blue-500", description: "Видео треки", }, { type: "audio" as const, label: "Аудио", icon: Volume2, color: "bg-green-500", description: "Аудио треки", }, { type: "image" as const, label: "Изображения", icon: Image, color: "bg-purple-500", description: "Изображения и фото", }, { type: "music" as const, label: "Музыка", icon: Music, color: "bg-orange-500", description: "Музыкальные треки", }, { type: "subtitle" as const, label: "Субтитры", icon: Type, color: "bg-yellow-500", description: "Текст и субтитры", }, ] interface TrackControlsPanelProps { className?: string } export function TrackControlsPanel({ className }: TrackControlsPanelProps) { const { tracks } = useTracks() const { updateTrack } = useTimeline() const toggleTrackVisibility = (trackId: string, currentHidden: boolean) => { void updateTrack(trackId, { isHidden: !currentHidden }) } const toggleTrackLock = (trackId: string, currentLock: boolean) => { void updateTrack(trackId, { isLocked: !currentLock }) } return (
{/* Панель треков */}
{/* Список треков */}
{tracks.length === 0 ? (

Треки не найдены

) : (

Треки проекта

{tracks.map((track) => { const trackTypeInfo = TRACK_TYPES.find((t) => t.type === track.type) const Icon = trackTypeInfo?.icon || Video return (
{/* Заголовок трека */}
{track.name}
{track.type}
{/* Контролы трека */}
) })}
)}
{/* Панель персон */}
) }