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,20 +205,59 @@ 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>
<p className="text-sm text-gray-600 mt-1">Manage and monitor your fitness clients</p>
</div>
{/* Filter Buttons */}
<div className="flex flex-wrap gap-2">
<Button <Button
variant={filter === "all" ? "primary" : "secondary"} variant={filter === "all" ? "primary" : "secondary"}
onClick={() => setFilter("all")} onClick={() => setFilter("all")}
className="text-xs"
> >
All Users All Users
</Button> </Button>
<Button
variant={filter === "client" ? "primary" : "secondary"}
onClick={() => setFilter("client")}
className="text-xs"
>
Clients
</Button>
<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>
{/* Action Buttons */}
<div className="flex flex-wrap gap-2">
<Button <Button
variant="secondary" variant="secondary"
onClick={() => selectedUser && handleEditUser(selectedUser)} onClick={() => selectedUser && handleEditUser(selectedUser)}
disabled={!selectedUser} disabled={!selectedUser}
className="text-xs"
> >
Edit User Edit User
</Button> </Button>
@ -235,6 +274,7 @@ export function UserManagement() {
setSelectedUser(null); setSelectedUser(null);
setIsEditing(true); setIsEditing(true);
}} }}
className="text-xs"
> >
Invite User Invite User
</Button> </Button>
@ -242,55 +282,29 @@ export function UserManagement() {
variant="secondary" variant="secondary"
onClick={() => selectedUser && handleDeleteUser(selectedUser)} onClick={() => selectedUser && handleDeleteUser(selectedUser)}
disabled={!selectedUser} disabled={!selectedUser}
className="text-xs"
> >
Delete User Delete User
</Button> </Button>
<Button <Button variant="secondary" onClick={handleRefresh} className="text-xs">
variant={filter === "client" ? "primary" : "secondary"} Refresh
onClick={() => setFilter("client")}
>
Clients
</Button> </Button>
<Button <Button variant="secondary" onClick={handleExport} className="text-xs">
variant={filter === "trainer" ? "primary" : "secondary"} Export CSV
onClick={() => setFilter("trainer")}
>
Trainers
</Button> </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"> {/* Stats */}
<div className="text-sm text-gray-600"> <div className="text-sm text-gray-600 px-4 py-2 bg-gray-50 rounded-lg">
Showing {users.length} users Showing {users.length} users
{selectedUser && ( {selectedUser && (
<span className="ml-4 text-blue-600"> <span className="ml-4 text-blue-600 font-medium">
Selected: {selectedUser.firstName} {selectedUser.lastName} Selected: {selectedUser.firstName} {selectedUser.lastName}
</span> </span>
)} )}
</div> </div>
<div className="flex gap-2">
<Button variant="secondary" onClick={handleRefresh}>
Refresh
</Button>
<Button variant="secondary" onClick={handleExport}>
Export CSV
</Button>
</div>
</div>
{/* User Grid */}
<Card> <Card>
<CardContent className="p-0"> <CardContent className="p-0">
<UserGrid <UserGrid