'use client'; import Link from 'next/link'; import { ExternalLink, Ticket, UserRound } from 'lucide-react'; import { ProtectedVideoPlayer } from '@/components/media/ProtectedVideoPlayer'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { PERMISSIONS } from '@/constants/permissions'; import { usePermissions } from '@/hooks/usePermissions'; import { ROUTES } from '@/utils/routes'; import type { UploadListItem } from '@/types'; import { formatDate } from '@/utils/date'; import { UploadResultCell } from './UploadResultCell'; import { UploadStatusBadge } from './UploadStatusBadge'; interface UploadDetailsDialogProps { upload: UploadListItem | null; open: boolean; onOpenChange: (open: boolean) => void; } export function UploadDetailsDialog({ upload, open, onOpenChange, }: UploadDetailsDialogProps) { const { hasPermission } = usePermissions(); const canOpenTicket = hasPermission(PERMISSIONS.TICKET.READ); const details = [ { label: 'Project', value: upload?.project }, { label: 'Package', value: upload?.package }, { label: 'Segment', value: upload?.segment }, { label: 'Chainage', value: upload?.chainage }, { label: 'Uploaded', value: formatDate(upload?.uploaded_at) }, ]; return ( Upload Details Preview the inspection video and review its processing details.

Video Preview

{upload?.ticket_id && canOpenTicket ? ( ) : null}
); }