+ {car.manufacturer} {car.model} +
++ {car.year}{car.color ? ` · ${car.color}` : ""} +
++ اضغط لعرض التفاصيل ← +
+diff --git a/Components/car/CarDeleteModal.tsx b/Components/car/CarDeleteModal.tsx new file mode 100644 index 0000000..3bcb603 --- /dev/null +++ b/Components/car/CarDeleteModal.tsx @@ -0,0 +1,87 @@ +"use client"; +// Components/Car/CarDeleteModal.tsx +// Confirmation dialog before soft-deleting a car. + +import { useEffect } from "react"; +import { Spinner } from "../UI"; +import type { Car } from "../../types/car"; + +interface CarDeleteModalProps { + car: Car; + deleting: boolean; + onCancel: () => void; + onConfirm: () => void; +} + +export function CarDeleteModal({ car, deleting, onCancel, onConfirm }: CarDeleteModalProps) { + useEffect(() => { + const h = (e: KeyboardEvent) => { if (e.key === "Escape") onCancel(); }; + window.addEventListener("keydown", h); + return () => window.removeEventListener("keydown", h); + }, [onCancel]); + + return ( +
+ هل أنت متأكد من حذف{" "} + + {car.manufacturer} {car.model} + + {" "}( + + {car.plateLetters} {car.plateNumber} + + )؟ لا يمكن التراجع عن هذا الإجراء. +
++ {isNew ? "إضافة مركبة" : "تعديل مركبة"} +
++ معرض الصور +
+لا توجد صور بعد
++ اضغط على "رفع صور" لإضافة أولى الصور لهذه المركبة. +
++ {car.manufacturer} {car.model} +
++ {car.year}{car.color ? ` · ${car.color}` : ""} +
++ اضغط لعرض التفاصيل ← +
+- إدارة الأسطول -
-- إجمالي{" "} - - {total} - {" "} - مركبة في الأسطول -
+ }}> ++ إدارة الأسطول +
++ إجمالي {total} مركبة في الأسطول +
+- لا توجد نتائج {search && `لـ "${search}"`} -
+ /* Empty state */ ++ {search ? `لا توجد مركبات تطابق "${search}"` : "لا توجد مركبات بعد"} +
++ اضغط على "إضافة مركبة" لإضافة أول مركبة في الأسطول. +
+ {!search && ( + + )} +- {c.manufacturer} {c.model} -
-- {c.year} - {c.color ? ` · ${c.color}` : ""} -
-إدارة الفريق @@ -88,25 +108,53 @@ export default function UsersPage() {