diff --git a/artifacts/tx-os/src/pages/admin.tsx b/artifacts/tx-os/src/pages/admin.tsx
index d738ec0c..7ea915a9 100644
--- a/artifacts/tx-os/src/pages/admin.tsx
+++ b/artifacts/tx-os/src/pages/admin.tsx
@@ -138,7 +138,7 @@ import { useQueryClient, useQuery } from "@tanstack/react-query";
import { useAuth } from "@/contexts/AuthContext";
import { useUpload, type UploadResponse } from "@workspace/object-storage-web";
import { resolveServiceImageUrl } from "@/lib/image-url";
-import { ArrowRight, ArrowLeft, Settings, Plus, Pencil, Trash2, Shield, Upload, Loader2, LayoutDashboard, Grid2X2, Coffee, Users as UsersIcon, Menu as MenuIcon, TrendingUp, TrendingDown, UserPlus, Activity, KeyRound, Copy, ChevronDown, ScrollText, Download } from "lucide-react";
+import { ArrowRight, ArrowLeft, Settings, Plus, Pencil, Trash2, Shield, Upload, Loader2, LayoutDashboard, Grid2X2, Coffee, Users as UsersIcon, Menu as MenuIcon, TrendingUp, TrendingDown, UserPlus, Activity, KeyRound, Copy, ChevronDown, ScrollText, Download, X, ImageIcon, Power } from "lucide-react";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
@@ -1256,60 +1256,141 @@ export default function AdminPage() {
{/* Edit Service Modal */}
{editingService && (
-
-
-
- {editingService.id ? t("admin.editService") : t("admin.addService")}
-
- {(
- [
- { field: "nameAr", label: t("admin.serviceNameAr") },
- { field: "nameEn", label: t("admin.serviceNameEn") },
- ] as { field: keyof ServiceForm; label: string }[]
- ).map(({ field, label }) => (
-
-
{label}
-
setEditingService({ ...editingService, form: { ...editingService.form, [field]: e.target.value } })}
- className="bg-white/70 border-slate-200"
+
{ if (e.target === e.currentTarget) setEditingService(null); }}
+ >
+
+ {/* Header */}
+
+
+
+
+
+
+
+ {editingService.id ? t("admin.editService") : t("admin.addService")}
+
+
+ {editingService.id
+ ? (lang === "ar" ? "حدّث تفاصيل الخدمة وصورتها" : "Update the service details and image")
+ : (lang === "ar" ? "أضف خدمة جديدة إلى القائمة" : "Add a new service to the list")}
+
+
+
+
setEditingService(null)}
+ className="shrink-0 -m-1 p-1.5 rounded-lg text-slate-400 hover:text-slate-700 hover:bg-slate-100 transition-colors"
+ aria-label={t("common.cancel")}
+ >
+
+
+
+
+ {/* Body */}
+
+ {/* Name fields — side by side on sm+ */}
+
+
+ {/* Image */}
+
+
+
+ {t("admin.serviceImage")}
+
+
+ setEditingService({
+ ...editingService,
+ form: { ...editingService.form, imageUrl: url },
+ })
+ }
/>
- ))}
-
-
{t("admin.serviceImage")}
-
- setEditingService({
- ...editingService,
- form: { ...editingService.form, imageUrl: url },
- })
- }
- />
+ {/* Availability — card row */}
+
+
+
+
{t("admin.serviceAvailable")}
+
+ {editingService.form.isAvailable
+ ? (lang === "ar" ? "الخدمة معروضة للمستخدمين الآن" : "Visible to users right now")
+ : (lang === "ar" ? "الخدمة مخفية عن المستخدمين" : "Hidden from users")}
+
+
+
setEditingService({ ...editingService, form: { ...editingService.form, isAvailable: v } })}
+ />
+
+
+ {editingService.id !== undefined && (
+
+
+ openAuditLogForTarget("service", editingService.id!)
+ }
+ />
+
+ )}
-
- {t("admin.serviceAvailable")}
- setEditingService({ ...editingService, form: { ...editingService.form, isAvailable: v } })}
- />
-
- {editingService.id !== undefined && (
-
- openAuditLogForTarget("service", editingService.id!)
- }
- />
- )}
-
-
setEditingService(null)}>{t("common.cancel")}
-
{t("common.save")}
+
+ {/* Footer */}
+
+ setEditingService(null)}
+ >
+ {t("common.cancel")}
+
+
+ {t("common.save")}
+
diff --git a/attached_assets/image_1778577898945.png b/attached_assets/image_1778577898945.png
new file mode 100644
index 00000000..bec50758
Binary files /dev/null and b/attached_assets/image_1778577898945.png differ