import { useState } from "react"; import { useMutation } from "@tanstack/react-query"; import { Box, Button, Group, Paper, Stack, Text, Textarea, } from "@mantine/core"; import { MessageSquarePlus, Send } from "lucide-react"; import toast from "react-hot-toast"; import type { Freight } from "@edr/types"; import { SectionCard } from "./SectionCard"; import { bookingsService } from "@/services/bookings.service"; import { formatDateTime } from "@/lib/format"; import { extractErrorMessage } from "@/utils/errorExtractor"; export interface AdditionalDocsRequestCardProps { bookingId: string; /** Past requests, newest first. */ requests: Freight.ClearanceDocRequest[]; /** False once the shipment is paid — documents (and requests) are closed. */ canRequest: boolean; onSent?: () => void; } /** * GL asks the customer for additional clearance document(s) in plain words. * The message, its author and its time show on the customer's portal beside * the upload box, so the customer knows exactly what to send and who asked. */ export function AdditionalDocsRequestCard({ bookingId, requests, canRequest, onSent, }: AdditionalDocsRequestCardProps) { const [note, setNote] = useState(""); const send = useMutation({ mutationFn: () => bookingsService.requestAdditionalDocuments(bookingId, note), onSuccess: () => { toast.success("Request sent to the customer"); setNote(""); onSent?.(); }, onError: (e) => toast.error(extractErrorMessage(e, "Could not send the request")), }); return ( {canRequest ? (