style: improve UserManagement layout with flex-wrap and better organization

This commit is contained in:
Aleksandar 2025-12-11 13:39:42 +01:00
parent 0a55438bce
commit dd78602dd6

View File

@ -205,92 +205,106 @@ export function UserManagement() {
}; };
return ( return (
<div className="space-y-6"> <div className="space-y-4">
<div className="flex justify-between items-center"> {/* Header Section */}
<h2 className="text-2xl font-bold">User Management</h2> <div>
<div className="flex gap-2"> <h3 className="text-lg font-bold text-gray-900">User Management</h3>
<Button <p className="text-sm text-gray-600 mt-1">Manage and monitor your fitness clients</p>
variant={filter === "all" ? "primary" : "secondary"}
onClick={() => setFilter("all")}
>
All Users
</Button>
<Button
variant="secondary"
onClick={() => selectedUser && handleEditUser(selectedUser)}
disabled={!selectedUser}
>
Edit User
</Button>
<Button
variant="secondary"
onClick={() => {
setEditForm({
firstName: "",
lastName: "",
email: "",
role: "client",
phone: "",
});
setSelectedUser(null);
setIsEditing(true);
}}
>
Invite User
</Button>
<Button
variant="secondary"
onClick={() => selectedUser && handleDeleteUser(selectedUser)}
disabled={!selectedUser}
>
Delete User
</Button>
<Button
variant={filter === "client" ? "primary" : "secondary"}
onClick={() => setFilter("client")}
>
Clients
</Button>
<Button
variant={filter === "trainer" ? "primary" : "secondary"}
onClick={() => setFilter("trainer")}
>
Trainers
</Button>
<Button
variant={filter === "admin" ? "primary" : "secondary"}
onClick={() => setFilter("admin")}
>
Admins
</Button>
<Button
variant={filter === "superAdmin" ? "primary" : "secondary"}
onClick={() => setFilter("superAdmin")}
>
Super Admins
</Button>
</div>
</div> </div>
<div className="flex justify-between items-center"> {/* Filter Buttons */}
<div className="text-sm text-gray-600"> <div className="flex flex-wrap gap-2">
Showing {users.length} users <Button
{selectedUser && ( variant={filter === "all" ? "primary" : "secondary"}
<span className="ml-4 text-blue-600"> onClick={() => setFilter("all")}
Selected: {selectedUser.firstName} {selectedUser.lastName} className="text-xs"
</span> >
)} All Users
</div> </Button>
<div className="flex gap-2"> <Button
<Button variant="secondary" onClick={handleRefresh}> variant={filter === "client" ? "primary" : "secondary"}
Refresh onClick={() => setFilter("client")}
</Button> className="text-xs"
<Button variant="secondary" onClick={handleExport}> >
Export CSV Clients
</Button> </Button>
</div> <Button
variant={filter === "trainer" ? "primary" : "secondary"}
onClick={() => setFilter("trainer")}
className="text-xs"
>
Trainers
</Button>
<Button
variant={filter === "admin" ? "primary" : "secondary"}
onClick={() => setFilter("admin")}
className="text-xs"
>
Admins
</Button>
<Button
variant={filter === "superAdmin" ? "primary" : "secondary"}
onClick={() => setFilter("superAdmin")}
className="text-xs"
>
Super Admins
</Button>
</div> </div>
{/* Action Buttons */}
<div className="flex flex-wrap gap-2">
<Button
variant="secondary"
onClick={() => selectedUser && handleEditUser(selectedUser)}
disabled={!selectedUser}
className="text-xs"
>
Edit User
</Button>
<Button
variant="secondary"
onClick={() => {
setEditForm({
firstName: "",
lastName: "",
email: "",
role: "client",
phone: "",
});
setSelectedUser(null);
setIsEditing(true);
}}
className="text-xs"
>
Invite User
</Button>
<Button
variant="secondary"
onClick={() => selectedUser && handleDeleteUser(selectedUser)}
disabled={!selectedUser}
className="text-xs"
>
Delete User
</Button>
<Button variant="secondary" onClick={handleRefresh} className="text-xs">
Refresh
</Button>
<Button variant="secondary" onClick={handleExport} className="text-xs">
Export CSV
</Button>
</div>
{/* Stats */}
<div className="text-sm text-gray-600 px-4 py-2 bg-gray-50 rounded-lg">
Showing {users.length} users
{selectedUser && (
<span className="ml-4 text-blue-600 font-medium">
Selected: {selectedUser.firstName} {selectedUser.lastName}
</span>
)}
</div>
{/* User Grid */}
<Card> <Card>
<CardContent className="p-0"> <CardContent className="p-0">
<UserGrid <UserGrid