import { useState } from "react"; import { Text } from "@/components/ui/text"; import { UpliftRequestForm } from "@/app/v/[token]/dispatch/_components/uplift-request-form"; import type { VendorMediaUsage } from "@/domain/vendor-portal/lib/document-validation"; import type { UpliftFormValues } from "@/domain/vendor-portal/lib/uplift-validation"; import type { VendorPortalUpliftRequest } from "@/domain/vendor-portal/types/vendor-portal"; import { formatDateTime } from "@/lib/time-utils"; type UpliftRequestCardProps = { request: VendorPortalUpliftRequest; locked: boolean; canAct: boolean; uploadingPercent: number | undefined; submitting: boolean; errorMessage: string; onWithdraw: (request: VendorPortalUpliftRequest) => void; onRevise: (request: VendorPortalUpliftRequest, values: UpliftFormValues) => void; onCancelRevise: () => void; mediaUsage?: VendorMediaUsage; }; const WITHDRAWABLE_STATUSES = new Set(["Pending", "ChangesRequested"]); function statusClassName(status: string): string { return `vp-uplift-status-${String(status).toLowerCase()}`; } export function UpliftRequestCard({ request, locked, canAct, uploadingPercent, submitting, errorMessage, onWithdraw, onRevise, onCancelRevise, mediaUsage, }: UpliftRequestCardProps) { const [revising, setRevising] = useState(false); const canWithdraw = !locked && canAct && WITHDRAWABLE_STATUSES.has(request.status); const canRevise = !locked && canAct && request.status === "ChangesRequested"; return (