From 948c80da156f1b1432745973daefcb8aa94b567a Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 23 Apr 2026 11:26:15 +0000 Subject: [PATCH] feat(ui): another small batch \u2014 router settings, survey, team/model tabs - LatencyBasedConfiguration / ReliabilityRetriesSection: antd Input \u2192 shadcn Input. Semantic tokens for labels/muted text. - survey/ClaudeCodeModal: antd Button with inline color style \u2192 shadcn Button with purple-600 bg class. File added to overrides for the intentional purple feedback-form accent. - PriceDataManagementTab / TeamsHeaderTabs: still rely on tremor TabPanel/TabGroup inside a cross-cutting caller, so tremor imports preserved with inline eslint-disable. Migrated all @heroicons RefreshIcon \u2192 lucide RefreshCw. - Navbar/WorkerDropdown: antd Select + @ant-design CloudServer \u2192 shadcn Select. Gates: TS \u2713 | Build \u2713. Co-authored-by: yuneng-jiang --- ui/litellm-dashboard/.eslintrc.json | 1 + .../components/PriceDataManagementTab.tsx | 11 +++-- .../teams/components/TeamsHeaderTabs.tsx | 12 +++-- .../Navbar/WorkerDropdown/WorkerDropdown.tsx | 41 +++++++++------- .../LatencyBasedConfiguration.tsx | 32 +++++++----- .../ReliabilityRetriesSection.tsx | 19 ++++--- .../src/components/survey/ClaudeCodeModal.tsx | 49 ++++++++++--------- 7 files changed, 101 insertions(+), 64 deletions(-) diff --git a/ui/litellm-dashboard/.eslintrc.json b/ui/litellm-dashboard/.eslintrc.json index 2b759be26e6..ae14c0f4e88 100644 --- a/ui/litellm-dashboard/.eslintrc.json +++ b/ui/litellm-dashboard/.eslintrc.json @@ -54,6 +54,7 @@ "src/components/permissions/VectorStorePermissions.tsx", "src/components/permissions/AgentPermissions.tsx", "src/components/permissions/MCPServerPermissions.tsx", + "src/components/survey/ClaudeCodeModal.tsx", "src/components/policies/impact_preview_alert.tsx", "src/components/policies/impact_popover.tsx", "src/components/DeletedKeysPage/DeletedKeysPage.tsx", diff --git a/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/components/PriceDataManagementTab.tsx b/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/components/PriceDataManagementTab.tsx index d44d19879d5..c3c4a5dd7e7 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/components/PriceDataManagementTab.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/components/PriceDataManagementTab.tsx @@ -1,4 +1,5 @@ -import { TabPanel, Text, Title } from "@tremor/react"; +// eslint-disable-next-line litellm-ui/no-banned-ui-imports +import { TabPanel } from "@tremor/react"; import PriceDataReload from "@/components/price_data_reload"; import React from "react"; import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; @@ -12,10 +13,12 @@ const PriceDataManagementTab = () => {
- Price Data Management - +

+ Price Data Management +

+

Manage model pricing data and configure automatic reload schedules - +

{ +const TeamsHeaderTabs = ({ + lastRefreshed, + onRefresh, + userRole, + children, +}: TeamsHeaderTabsProps) => { return ( @@ -22,7 +28,7 @@ const TeamsHeaderTabs = ({ lastRefreshed, onRefresh, userRole, children }: Teams
{lastRefreshed && Last Refreshed: {lastRefreshed}} = ({ onWorkerSwitch }) => { return ( ); }; diff --git a/ui/litellm-dashboard/src/components/router_settings/LatencyBasedConfiguration.tsx b/ui/litellm-dashboard/src/components/router_settings/LatencyBasedConfiguration.tsx index 1c2d52cf0c5..3d1b146d17d 100644 --- a/ui/litellm-dashboard/src/components/router_settings/LatencyBasedConfiguration.tsx +++ b/ui/litellm-dashboard/src/components/router_settings/LatencyBasedConfiguration.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { Input } from "antd"; +import { Input } from "@/components/ui/input"; interface routingStrategyArgs { ttl?: number; @@ -12,6 +12,7 @@ const defaultLowestLatencyArgs: routingStrategyArgs = { }; interface LatencyBasedConfigurationProps { + // eslint-disable-next-line @typescript-eslint/no-explicit-any routingStrategyArgs: { [key: string]: any }; } @@ -28,23 +29,33 @@ const LatencyBasedConfiguration: React.FC = ({ <>
-

Latency-Based Configuration

-

Fine-tune latency-based routing behavior

+

+ Latency-Based Configuration +

+

+ Fine-tune latency-based routing behavior +

- +
- {Object.entries(routingStrategyArgs || defaultLowestLatencyArgs).map(([param, value]) => ( + {Object.entries( + routingStrategyArgs || defaultLowestLatencyArgs, + ).map(([param, value]) => (
@@ -52,11 +63,10 @@ const LatencyBasedConfiguration: React.FC = ({ ))}
- -
+ +
); }; export default LatencyBasedConfiguration; - diff --git a/ui/litellm-dashboard/src/components/router_settings/ReliabilityRetriesSection.tsx b/ui/litellm-dashboard/src/components/router_settings/ReliabilityRetriesSection.tsx index 3005822ab88..216e54f4157 100644 --- a/ui/litellm-dashboard/src/components/router_settings/ReliabilityRetriesSection.tsx +++ b/ui/litellm-dashboard/src/components/router_settings/ReliabilityRetriesSection.tsx @@ -1,8 +1,10 @@ import React from "react"; -import { Input } from "antd"; +import { Input } from "@/components/ui/input"; interface ReliabilityRetriesSectionProps { + // eslint-disable-next-line @typescript-eslint/no-explicit-any routerSettings: { [key: string]: any }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any routerFieldsMetadata: { [key: string]: any }; } @@ -13,14 +15,18 @@ const ReliabilityRetriesSection: React.FC = ({ return (
-

Reliability & Retries

-

Configure retry logic and failure handling

+

+ Reliability & Retries +

+

+ Configure retry logic and failure handling +

{Object.entries(routerSettings) .filter( - ([param, value]) => + ([param]) => param != "fallbacks" && param != "context_window_fallbacks" && param != "routing_strategy_args" && @@ -30,10 +36,10 @@ const ReliabilityRetriesSection: React.FC = ({ .map(([param, value]) => (