diff --git a/web/src/pages/Admin/Users/index.tsx b/web/src/pages/Admin/Users/index.tsx new file mode 100644 index 0000000..bd559ba --- /dev/null +++ b/web/src/pages/Admin/Users/index.tsx @@ -0,0 +1,135 @@ +import Breadcrumbs from "@/components/ui/breadcrumbs"; +import { Button } from "@/components/ui/button"; +import Avatar from "@/feature/Avatar"; +import { useUsers } from "@/store/admin/users"; +import { UserPlus } from "lucide-react"; +import { useEffect, type FC } from "react"; +import { Link } from "react-router"; + +const AdminUsersPage: FC = () => { + const users = useUsers((state) => state.users); + const loading = useUsers((state) => state.fetching); + const fetchUsers = useUsers((state) => state.fetchUsers); + + useEffect(() => { + fetchUsers(); + }, [fetchUsers]); + + return ( +
+
+ +
+
+

Search...

+ + + +
+ +
+ + {loading && ( +
+
+ Loading... +
+
+ )} + + + + + + + + + + + + {!loading && users.length === 0 ? ( + + + + ) : ( + users.map((user) => ( + + + + + + + + )) + )} + +
+ Full Name + + Email + + Is Admin + + Created At + + Last Login +
+ No services found. +
+ +
+ +

{user.full_name}

+
+ +
+ {user.email} + + + {user.is_admin ? "Yes" : "No"} + + + {new Date(user.created_at).toLocaleString()} + + {user.last_login + ? new Date(user.last_login).toLocaleString() + : "never"} +
+
+
+ ); +}; + +export default AdminUsersPage;