"use client"; import { useState } from "react"; import { Alert, Toast } from "@/src/Components/UI"; import { BranchTable } from "@/src/Components/Branch/BranchTable"; import { BranchFormModal } from "@/src/Components/Branch/BranchFormModal"; import { BranchDetailModal } from "@/src/Components/Branch/BranchDetailModal"; import { DeleteConfirmModal } from "@/src/Components/Branch/DeleteConfirmModal"; import { useBranches } from "@/src/hooks/useBranch"; import type { Branch, BranchFormData } from "@/src/types/branch"; export default function BranchesPage() { // ── Modal state ───────────────────────────────────────────────────────────── // false = closed | null = create mode | Branch = edit mode const [formTarget, setFormTarget] = useState(false); const [deleteTarget, setDeleteTarget] = useState(null); // ID of branch whose detail modal is open; null = closed const [viewBranchId, setViewBranchId] = useState(null); // Local submitting flag shown in DeleteConfirmModal spinner const [deleting, setDeleting] = useState(false); // ── Data hook ─────────────────────────────────────────────────────────────── const { branches, loading, total, pages, error, page, search, setPage, handleSearch, clearError, createBranch, updateBranch, deleteBranch, notification, } = useBranches(); // ── Create / Update handler ───────────────────────────────────────────────── const handleFormSubmit = async (data: BranchFormData, isNew: boolean): Promise => { if (isNew) return createBranch(data); // formTarget is Branch when editing return updateBranch((formTarget as Branch).id, data); }; // ── Delete handler ────────────────────────────────────────────────────────── const handleDeleteConfirm = async () => { if (!deleteTarget || deleting) return; setDeleting(true); const ok = await deleteBranch(deleteTarget.id); setDeleting(false); if (ok) setDeleteTarget(null); }; // ── Render ────────────────────────────────────────────────────────────────── return ( <> {/* Global success / error toast — fires on create, update, AND delete */} {/* Branch detail modal */} {viewBranchId && ( setViewBranchId(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 branch button */}
{/* General load error */} {error && } {/* Branches table */} setViewBranchId(branch.id)} onEdit={branch => setFormTarget(branch)} onDelete={branch => setDeleteTarget(branch)} onAddFirst={() => setFormTarget(null)} onPageChange={setPage} />
); }