'use client'; import { memo } from 'react'; import Link from 'next/link'; import { ArrowLeft, ChevronDown, GitCompareArrows, ListChecks, MoreVertical, Plus, Share2, ShieldCheck, Trash2, } from 'lucide-react'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { Separator } from '@/components/ui/separator'; import { cn } from '@/lib/utils'; import { DownloadControls } from '@/components/video-page/download-controls'; import { VersionDeleteDialog } from '@/components/video-page/version-delete-dialog'; import { VersionActionsDialog } from '@/components/video-page/version-actions-dialog'; import type { BunnyDownloadPreference, DownloadTarget, Version, } from '@/components/video-page/types'; import type { VideoSource } from '@/lib/video-providers'; interface VideoPageHeaderProps { mode: 'dashboard' | 'watch'; backHref: string; title: string; projectName: string; isFullscreenMode: boolean; cursorIdle: boolean; isPlaying: boolean; versions: Version[]; activeVersion: Version; activeVersionId: string | null; onVersionSelect: (versionId: string) => void; onDeleteCurrentVersionClick: () => void; showDeleteVersionDialog: boolean; setShowDeleteVersionDialog: (open: boolean) => void; isDeletingVersion: boolean; onDeleteVersion: () => void; videoCanDownload: boolean; isDownloadingVideo: boolean; activeDownloadTarget: DownloadTarget | null; onDownload: (preference?: BunnyDownloadPreference) => void; projectId?: string; videoId: string; directUploadsEnabled: boolean; showVersionDialog: boolean; setShowVersionDialog: (open: boolean) => void; newVersionMode: 'url' | 'file'; setNewVersionMode: (mode: 'url' | 'file') => void; newVersionUrl: string; handleNewVersionUrlChange: (url: string) => void; newVersionUrlError: string; newVersionSource: VideoSource | null; newVersionFile: File | null; setNewVersionFile: (file: File | null) => void; newVersionLabel: string; setNewVersionLabel: (value: string) => void; newVersionUploadStatus: string; newVersionUploadProgress: number; isCreatingVersion: boolean; onCreateVersion: () => void; onOpenCompare: () => void; canRequestApproval: boolean; canShareVideo: boolean; hasPendingApprovalRequest: boolean; onOpenApprovalRequest: () => void; onOpenApprovalsPanel: () => void; } export const VideoPageHeader = memo(function VideoPageHeader({ mode, backHref, title, projectName, isFullscreenMode, cursorIdle, isPlaying, versions, activeVersion, activeVersionId, onVersionSelect, onDeleteCurrentVersionClick, showDeleteVersionDialog, setShowDeleteVersionDialog, isDeletingVersion, onDeleteVersion, videoCanDownload, isDownloadingVideo, activeDownloadTarget, onDownload, projectId, videoId, directUploadsEnabled, showVersionDialog, setShowVersionDialog, newVersionMode, setNewVersionMode, newVersionUrl, handleNewVersionUrlChange, newVersionUrlError, newVersionSource, newVersionFile, setNewVersionFile, newVersionLabel, setNewVersionLabel, newVersionUploadStatus, newVersionUploadProgress, isCreatingVersion, onCreateVersion, onOpenCompare, canRequestApproval, canShareVideo, hasPendingApprovalRequest, onOpenApprovalRequest, onOpenApprovalsPanel, }: VideoPageHeaderProps) { const canManageVideo = canShareVideo || canRequestApproval; return (