"use client"; import { useState } from "react"; import { Alert } from "@/Components/UI"; import { UserTable } from "@/Components/User/UserTable"; import { UserFormModal } from "@/Components/User/UserFormModal"; import { UserDetailModal } from "@/Components/User/UserDetailModal"; import { DeleteConfirmModal } from "@/Components/User/DeleteConfirmModal"; import { Toast } from "@/Components/User/Toast"; import { useUsers } from "@/hooks/useUser"; import type { User, UserFormData } from "@/types/user"; export default function UsersPage() { // ── Modal state ───────────────────────────────────────────────────────────── // false = closed | null = create mode | User = edit mode const [formTarget, setFormTarget] = useState(false); const [deleteTarget, setDeleteTarget] = useState(null); // ID of user whose detail modal is open; null = closed const [viewUserId, setViewUserId] = useState(null); // Local submitting flag shown in DeleteConfirmModal spinner const [deleting, setDeleting] = useState(false); // ── Data hook ─────────────────────────────────────────────────────────────── const { users, loading, total, pages, error, roles, branches, page, search, setPage, handleSearch, clearError, createUser, updateUser, deleteUser, notification, } = useUsers(); // ── Create / Update handler ───────────────────────────────────────────────── const handleFormSubmit = async (data: UserFormData, isNew: boolean): Promise => { if (isNew) return createUser(data); // formTarget is User when editing return updateUser((formTarget as User).id, data); }; // ── Delete handler ────────────────────────────────────────────────────────── const handleDeleteConfirm = async () => { if (!deleteTarget || deleting) return; setDeleting(true); console.log(setDeleting(true)) const ok = await deleteUser(deleteTarget.id); console.log(ok) setDeleting(false); if (ok) setDeleteTarget(null); }; // ── Render ────────────────────────────────────────────────────────────────── return ( <> {/* Global success / error toast — fires on create, update, AND delete */} {/* User detail modal */} {viewUserId && ( setViewUserId(null)} /> )} {/* Create / Edit modal */} {formTarget !== false && ( setFormTarget(false)} onSubmit={handleFormSubmit} /> )} {/* Delete confirmation dialog */} {deleteTarget && ( { if (!deleting) setDeleteTarget(null); }} onConfirm={handleDeleteConfirm} /> )}
{/* ── Page header ── */}

إدارة الفريق

المستخدمون

إجمالي {total} مستخدم

{/* Search input */}
handleSearch(e.target.value)} dir="rtl" style={{ width: "100%", height: 40, paddingRight: 36, paddingLeft: 12, borderRadius: "var(--radius-lg)", border: "1px solid var(--color-border)", background: "var(--color-surface)", fontSize: 13, outline: "none", fontFamily: "var(--font-sans)", color: "var(--color-text-primary)", }} />
{/* Add user button */}
{/* General load error */} {error && } {/* Users table */} setViewUserId(user.id)} onEdit={user => setFormTarget(user)} onDelete={user => setDeleteTarget(user)} onAddFirst={() => setFormTarget(null)} onPageChange={setPage} />
); }