"use client"; import { useState } from "react"; import { Alert } from "@/src/Components/UI"; import { RoleTable } from "@/src/Components/role/RoleTable"; import { RoleFormModal } from "@/src/Components/role/RoleFormModal"; import { RoleDetailModal } from "@/src/Components/role/RoleDetailModal"; import { DeleteRoleModal } from "@/src/Components/role/DeleteRoleModal"; import { RoleToast } from "@/src/Components/role/RoleToast"; import { useRoles } from "@/src/hooks/useRole"; import type { Role, RoleFormData } from "@/src/services/role.service"; export default function RolesPage() { const { roles, loading, total, pages, error, permissions, page, search, setPage, handleSearch, clearError, createRole, updateRole, deleteRole, updateRolePermissionsBulk, notification, } = useRoles(); // false = closed | null = create mode | Role = edit mode const [formTarget, setFormTarget] = useState(false); const [viewTarget, setViewTarget] = useState(null); const [deleteTarget, setDeleteTarget] = useState(null); const [deleting, setDeleting] = useState(false); const handleFormSubmit = async ( data: RoleFormData, currentPermIds: string[], ): Promise => { if (formTarget === null) { return createRole(data); } return updateRole((formTarget as Role).id, data, currentPermIds); }; const handleDeleteConfirm = async () => { if (!deleteTarget || deleting) return; setDeleting(true); const ok = await deleteRole(deleteTarget.id); setDeleting(false); if (ok) setDeleteTarget(null); }; const handleSavePermissions = async ( roleId: string, permissionIds: string[], ): Promise => { return updateRolePermissionsBulk(roleId, permissionIds); }; return ( <> {formTarget !== false && ( setFormTarget(false)} onSubmit={handleFormSubmit} /> )} {viewTarget && ( setViewTarget(null)} onSave={handleSavePermissions} /> )} {deleteTarget && ( setDeleteTarget(null)} onConfirm={handleDeleteConfirm} /> )}
{/* Header */}

إدارة الصلاحيات

الأدوار والصلاحيات

إجمالي {total} دور

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, color: "var(--color-text-primary)", outline: "none", fontFamily: "var(--font-sans)" }} />
{error && } setViewTarget(role)} onEdit={role => setFormTarget(role)} onDelete={role => setDeleteTarget(role)} onAddFirst={() => setFormTarget(null)} onPageChange={setPage} />
); }