import { FileText, Calendar, Hash, Users, Car, Building2, CircleDollarSign, Clock, Mail, Phone, DollarSign, } from "lucide-react" import { Card, CardContent, CardHeader, CardTitle, } from "@/shared/components/ui/card" import { Badge } from "@/shared/components/ui/badge" import { Separator } from "@/shared/components/ui/separator" import { formatDate, formatCurrency, formatEnum, formatNumber } from "@/shared/utils/formatters" type InvoiceData = { id?: number subject?: string invoice_number?: string invoice_title?: string invoice_date?: string due_date?: string status?: string notes?: string terms_and_conditions?: string customer_name?: string customer_id?: number customer?: any vehicle_name?: string vehicle_id?: number vehicle?: any department_name?: string department_id?: number payment_terms_id?: number payment_mode_id?: number amount?: number | string | null received_payment?: number | string | null discount?: string has_insurance?: number | boolean insurer_id?: number | null insurer?: any kms_in?: number | null invoice_to_id?: number | null billing_address_id?: number | null delivery_address_id?: number | null created_at?: string updated_at?: string } type InvoiceGeneralInfoProps = { invoice: InvoiceData } function InfoItem({ icon: Icon, label, value, }: { icon: React.ComponentType<{ className?: string }> label: string value?: string | null }) { return (
{label} {value || }
) } const statusColorMap: Record = { draft: "secondary", open: "default", paid: "default", overdue: "destructive", void: "outline", } export function InvoiceGeneralInfo({ invoice }: InvoiceGeneralInfoProps) { const customer = invoice.customer || {} const vehicle = invoice.vehicle || {} const insurer = invoice.insurer || {} return (
{/* Invoice Details */} Invoice Details
{invoice.subject && ( {invoice.subject} )} {invoice.status && ( {formatEnum(invoice.status)} )}
{/* Customer & Vehicle Information */}
{/* Customer Details */} Customer Information
{customer.address_line_1 && ( <>
Address

{customer.address_line_1} {customer.address_line_2 ? `, ${customer.address_line_2}` : ""}
{customer.city ? `${customer.city}` : ""} {customer.zip_code ? `, ${customer.zip_code}` : ""}

)}
{/* Vehicle Details */} Vehicle Information
{vehicle.mileage && ( <> )}
{/* Payment & Insurance Information */}
{/* Payment Information */} Payment Information
{/* Insurance & Additional Info */} Additional Information
{invoice.has_insurance && insurer.id && ( )} {invoice.kms_in && ( )}
{/* Notes & Terms */} {(invoice.notes || invoice.terms_and_conditions) && (
{invoice.notes && ( Notes

{invoice.notes}

)} {invoice.terms_and_conditions && ( Terms & Conditions

{invoice.terms_and_conditions}

)}
)}
) }