From da902c5c55917ed91de2707e09e98d88b0a81f7b Mon Sep 17 00:00:00 2001 From: yuneng-jiang Date: Mon, 12 Jan 2026 21:04:16 -0800 Subject: [PATCH] Migrate User and Team filters to use reusable components --- .../src/components/OldTeams.tsx | 95 ++++----------- .../src/components/view_users/table.tsx | 113 +++++------------- 2 files changed, 50 insertions(+), 158 deletions(-) diff --git a/ui/litellm-dashboard/src/components/OldTeams.tsx b/ui/litellm-dashboard/src/components/OldTeams.tsx index 10a38f0285..5679788d30 100644 --- a/ui/litellm-dashboard/src/components/OldTeams.tsx +++ b/ui/litellm-dashboard/src/components/OldTeams.tsx @@ -5,6 +5,10 @@ import TeamSSOSettings from "@/components/TeamSSOSettings"; import { isProxyAdminRole } from "@/utils/roles"; import { InfoCircleOutlined } from "@ant-design/icons"; import { ChevronDownIcon, ChevronRightIcon, RefreshIcon } from "@heroicons/react/outline"; +import { FilterInput } from "@/components/common_components/Filters/FilterInput"; +import { FiltersButton } from "@/components/common_components/Filters/FiltersButton"; +import { ResetFiltersButton } from "@/components/common_components/Filters/ResetFiltersButton"; +import { Search, User } from "lucide-react"; import { Accordion, AccordionBody, @@ -681,91 +685,34 @@ const Teams: React.FC = ({ {/* Search and Filter Controls */}
{/* Team Alias Search */} -
- handleFilterChange("team_alias", e.target.value)} - /> - - - -
+ handleFilterChange("team_alias", value)} + icon={Search} + /> {/* Filter Button */} - + active={showFilters} + hasActiveFilters={!!(filters.team_id || filters.team_alias || filters.organization_id)} + /> {/* Reset Filters Button */} - +
{/* Additional Filters */} {showFilters && (
{/* Team ID Search */} -
- handleFilterChange("team_id", e.target.value)} - /> - - - -
+ handleFilterChange("team_id", value)} + icon={User} + /> {/* Organization Dropdown */}
diff --git a/ui/litellm-dashboard/src/components/view_users/table.tsx b/ui/litellm-dashboard/src/components/view_users/table.tsx index 4f8dfa5809..9ae3101488 100644 --- a/ui/litellm-dashboard/src/components/view_users/table.tsx +++ b/ui/litellm-dashboard/src/components/view_users/table.tsx @@ -6,6 +6,10 @@ import { Skeleton } from "antd"; import { UserInfo } from "./types"; import UserInfoView from "./user_info_view"; import { columns as createColumns } from "./columns"; +import { FilterInput } from "@/components/common_components/Filters/FilterInput"; +import { FiltersButton } from "@/components/common_components/Filters/FiltersButton"; +import { ResetFiltersButton } from "@/components/common_components/Filters/ResetFiltersButton"; +import { Search, User, CircleUserRound } from "lucide-react"; interface FilterState { email: string; @@ -215,93 +219,45 @@ export function UserDataTable({ {/* Search and Filter Controls */}
{/* Email Search */} -
- updateFilters({ email: e.target.value })} - /> - - - -
+ updateFilters({ email: value })} + icon={Search} + /> {/* Filter Button */} - + active={showFilters} + hasActiveFilters={!!(filters.user_id || filters.user_role || filters.team)} + /> {/* Reset Filters Button */} - + />
{/* Additional Filters */} {showFilters && (
{/* User ID Search */} -
- updateFilters({ user_id: e.target.value })} - /> - - - -
+ updateFilters({ user_id: value })} + icon={User} + /> + + updateFilters({ sso_user_id: value })} + icon={CircleUserRound} + /> {/* Role Dropdown */}
@@ -333,17 +289,6 @@ export function UserDataTable({ ))}
- - {/* SSO ID Search */} -
- updateFilters({ sso_user_id: e.target.value })} - /> -
)}