diff --git a/adminfront/src/features/user-groups/routes/TenantUserGroupsTab.tsx b/adminfront/src/features/user-groups/routes/TenantUserGroupsTab.tsx
index 31fc4a1a..00bd5ff2 100644
--- a/adminfront/src/features/user-groups/routes/TenantUserGroupsTab.tsx
+++ b/adminfront/src/features/user-groups/routes/TenantUserGroupsTab.tsx
@@ -17,7 +17,7 @@ import {
UserPlus,
Users,
} from "lucide-react";
-import type React from "react";
+import * as React from "react";
import { useMemo, useState } from "react";
import { Link, useNavigate, useParams } from "react-router-dom";
import { toast } from "sonner";
diff --git a/adminfront/src/features/users/UserListPage.tsx b/adminfront/src/features/users/UserListPage.tsx
index 17473ff7..8468d18e 100644
--- a/adminfront/src/features/users/UserListPage.tsx
+++ b/adminfront/src/features/users/UserListPage.tsx
@@ -3,6 +3,7 @@ import type { AxiosError } from "axios";
import {
ChevronLeft,
ChevronRight,
+ FileDown,
Pencil,
Plus,
RefreshCw,
@@ -48,6 +49,7 @@ import {
fetchTenant,
fetchTenants,
fetchUsers,
+ exportUsersCSVUrl,
} from "../../lib/adminApi";
import { t } from "../../lib/i18n";
import { UserBulkUploadModal } from "./components/UserBulkUploadModal";
@@ -149,6 +151,11 @@ function UserListPage() {
}
};
+ const handleExport = () => {
+ const url = exportUsersCSVUrl(search, selectedCompany);
+ window.open(url, "_blank");
+ };
+
const errorMsg = (query.error as AxiosError<{ error?: string }>)?.response
?.data?.error;
const fallbackError =
@@ -252,6 +259,10 @@ function UserListPage() {
{t("ui.common.refresh", "새로고침")}
+
query.refetch()} />