diff --git a/client/pages/Staff.tsx b/client/pages/Staff.tsx index fd31edfe..dd8f7bad 100644 --- a/client/pages/Staff.tsx +++ b/client/pages/Staff.tsx @@ -55,6 +55,8 @@ export default function Staff() { const [openReports, setOpenReports] = useState([]); const [mentorshipAll, setMentorshipAll] = useState([]); const [loadingData, setLoadingData] = useState(false); + const [searchQ, setSearchQ] = useState(""); + const [users, setUsers] = useState([]); const refresh = async () => { setLoadingData(true); @@ -78,6 +80,19 @@ export default function Staff() { if (user && hasAccess) refresh(); }, [user, hasAccess]); + const loadUsers = async () => { + try { + const params = new URLSearchParams(); + if (searchQ.trim()) params.set("q", searchQ.trim()); + params.set("limit", "25"); + const resp = await fetch(`/api/staff/users?${params.toString()}`); + const data = resp.ok ? await resp.json() : []; + setUsers(Array.isArray(data) ? data : []); + } catch { + setUsers([]); + } + }; + const updateReportStatus = async ( id: string, status: "resolved" | "ignored" | "open", @@ -307,10 +322,39 @@ export default function Staff() { Search, roles, and quick actions - -

- User tools coming soon. -

+ +
+ setSearchQ(e.target.value)} + /> + +
+
+ {users.length === 0 ? ( +

No users found.

+ ) : ( +
+ {users.map((u) => ( +
+
+
+ {u.full_name || u.username || u.id} +
+
{u.username}
+
+ + {u.user_type || "unknown"} + +
+ ))} +
+ )} +