import { ChevronLeft, ChevronRight, CreditCard, DownloadIcon, FilePenLineIcon, MoreVertical, } from "lucide-react"; import { cn } from "@/lib/utils"; import { Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Pagination, PaginationContent, PaginationItem, Separator, Tabs, TabsContent, TabsList, TabsTrigger, } from "@/ui"; import { useToast } from "@/ui/use-toast"; import { t } from "i18next"; import { useCallback } from "react"; import { useNavigate } from "react-router-dom"; import { useQuotes } from "../hooks"; import { DownloadQuoteDialog } from "./DownloadQuoteDialog"; import { QuoteStatusEditor } from "./editors"; type QuoteResumeProps = { quoteId: string; className: string; }; export const QuoteResume = ({ quoteId, className }: QuoteResumeProps) => { const navigate = useNavigate(); const { toast } = useToast(); const { useOne, useSetStatus, useDownloader, getQuotePDFFilename } = useQuotes(); const { data, status, error: queryError } = useOne(quoteId); const { mutate: setStatusMutation } = useSetStatus(quoteId); const { download, ...downloadProps } = useDownloader(); const handleOnChangeStatus = (quoteId: string, newStatus: string) => { setStatusMutation( { newStatus }, { onSuccess: () => { toast({ description: t("quotes.quote_status_editor.toast_status_changed"), }); }, } ); }; const handleFinishDownload = useCallback(() => { toast({ description: t("quotes.downloading_dialog.toast_success"), }); }, [toast]); const handleDownload = useCallback(() => { if (data) download(data.id, getQuotePDFFilename(data)); }, [data]); if (status === "error") { return null; } if (status !== "success") { return null; } if (!data) { return ( Select a quote ); } return ( <> {`${t("quotes.list.preview.quote")} #${data.reference}`} { e.preventDefault(); navigate(`/quotes/edit/${data.id}`, { relative: "path" }); }} > {t("quotes.list.columns.actions.edit")} {t("quotes.list.preview.download_quote")} More Edit Export Trash Resume Preview Quote information {t("quotes.form_fields.date.label")} {new Date(data.date).toLocaleDateString()} Email liam@acme.com Phone +1 234 567 890 Customer Information Date: {new Date(data.date).toLocaleDateString()} {data.customer_information} Customer Liam Johnson Email liam@acme.com Phone +1 234 567 890 Order Details Glimmer Lamps x 2 $250.00 Aqua Filters x 1 $49.00 Subtotal $299.00 Shipping $5.00 Tax $25.00 Total $329.00 Shipping Information Liam Johnson 1234 Main St. Anytown, CA 12345 Billing Information Same as shipping address Payment Information Visa **** **** **** 4532 Updated... Previous Order Next Order > ); };
Select a quote