- Added React Query hooks for user-related actions: `useCreateUser`, `useUpdateUser`, `useDeleteUser`, `useActivateUser`, `useDeactivateUser`, and `useBulkUserAction`. - Implemented primary user management components: `UserFormDialog`, `UserManagementContent`, `UserListTable`, `BulkActionToolbar`, and `UserActionMenu`. - Replaced placeholder content on the Users page with full user management capabilities. - Included role-based validation, search, pagination, filtering, and bulk operations. - Enhanced form validation with `zod` schema for robust user input handling. - Added feedback mechanisms (toasts and alert dialogs) for user actions. - Improved UI accessibility and usability across the admin user management feature.
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
/**
|
|
* Admin Users Page
|
|
* Displays and manages all users
|
|
* Protected by AuthGuard in layout with requireAdmin=true
|
|
*/
|
|
|
|
/* istanbul ignore next - Next.js type import for metadata */
|
|
import type { Metadata } from 'next';
|
|
import Link from 'next/link';
|
|
import { ArrowLeft } from 'lucide-react';
|
|
import { Button } from '@/components/ui/button';
|
|
import { UserManagementContent } from '@/components/admin/users/UserManagementContent';
|
|
|
|
/* istanbul ignore next - Next.js metadata, not executable code */
|
|
export const metadata: Metadata = {
|
|
title: 'User Management',
|
|
};
|
|
|
|
export default function AdminUsersPage() {
|
|
return (
|
|
<div className="container mx-auto px-6 py-8">
|
|
<div className="space-y-6">
|
|
{/* Back Button + Header */}
|
|
<div className="flex items-center gap-4">
|
|
<Link href="/admin">
|
|
<Button variant="outline" size="icon">
|
|
<ArrowLeft className="h-4 w-4" />
|
|
</Button>
|
|
</Link>
|
|
<div>
|
|
<h1 className="text-3xl font-bold tracking-tight">
|
|
User Management
|
|
</h1>
|
|
<p className="mt-2 text-muted-foreground">
|
|
View, create, and manage user accounts
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
{/* User Management Content */}
|
|
<UserManagementContent />
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|