import { useQuery, useQueryClient } from "@tanstack/react-query"; import { useState } from "react"; import { Button } from "@/client/components/ui/button"; import { Card } from "@/client/components/ui/card"; import { ConfirmButton } from "@/client/components/ui/confirm-button"; import { PageError } from "@/client/components/ui/page-error"; import { PageHeader } from "@/client/components/ui/page-header"; import { ListRow } from "@/client/components/ui/row"; import { useRequireAdmin } from "@/client/hooks/use-auth-guard"; import { authClient } from "@/client/lib/auth-client"; import { queryKeys } from "@/client/lib/query"; import { hasAdminRole } from "@/shared/role"; interface AdminUser { id: string; email: string; name: string; role?: string | null; banned?: boolean | null; createdAt: string | Date; } export const AdminUsersPage = () => { const session = useRequireAdmin("/admin/users"); const queryClient = useQueryClient(); const [error, setError] = useState(null); // Per-user in-flight marker keyed on user id. Promote/Unban use plain // ) : ( banUser(user.id, true)} > Ban )} )} ); })} )} ); };