Files
spq-v2/src/components/repairOrders/ROModal.tsx
T
2026-07-12 10:01:39 -04:00

65 lines
2.0 KiB
TypeScript

import { X } from 'lucide-react';
import ROForm from '../ROForm';
import type { RepairOrder } from '../../types';
import type { CustomerWithVehicles } from '../../pages/Customers';
export function ROModal({
isOpen,
onClose,
onSave,
editRO,
existingRoNumbers,
settings,
customers,
}: {
isOpen: boolean;
onClose: () => void;
onSave: (data: Partial<RepairOrder>) => void;
editRO: RepairOrder | null;
existingRoNumbers: Set<string>;
settings: { taxRate: number; shopChargeRate: number; shopChargeCap: number; defaultLaborRate: number };
customers?: CustomerWithVehicles[];
}) {
if (!isOpen) return null;
const isEditing = !!editRO;
return (
<div className="fixed inset-0 z-50 flex items-start justify-center overflow-y-auto bg-black/50 p-4 pt-10">
<div className="w-full max-w-3xl rounded-2xl bg-white shadow-2xl dark:bg-gray-900">
{/* Header */}
<div className="flex items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-gray-700">
<div>
<h2 className="text-lg font-semibold text-gray-900 dark:text-white">
{isEditing ? 'Edit Repair Order' : 'Create Repair Order'}
</h2>
<p className="text-sm text-gray-500 dark:text-gray-400">
{isEditing
? `Editing RO #${editRO?.roNumber || ''}`
: 'Enter customer and vehicle information'}
</p>
</div>
<button
onClick={onClose}
className="rounded-lg p-2 text-gray-400 hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300"
>
<X className="h-5 w-5" />
</button>
</div>
{/* Body */}
<div className="px-6 py-5">
<ROForm
editRO={editRO}
existingRoNumbers={existingRoNumbers}
settings={settings}
customers={customers}
onSave={(data) => { onSave(data); onClose(); }}
onCancel={onClose}
/>
</div>
</div>
</div>
);
}