diff --git a/ui/litellm-dashboard/eslint-suppressions.json b/ui/litellm-dashboard/eslint-suppressions.json index ec1e3ac05ba..c09b832a69b 100644 --- a/ui/litellm-dashboard/eslint-suppressions.json +++ b/ui/litellm-dashboard/eslint-suppressions.json @@ -144,9 +144,6 @@ "src/app/(dashboard)/budgets/_components/budget_panel.tsx": { "local/filename-pascal-case": { "count": 1 - }, - "no-restricted-imports": { - "count": 1 } }, "src/app/(dashboard)/budgets/_components/edit_budget_modal.tsx": { @@ -1840,9 +1837,6 @@ } }, "src/app/(dashboard)/skills/_components/ClaudeCodePluginsPanel.tsx": { - "no-restricted-imports": { - "count": 2 - }, "react-hooks/set-state-in-effect": { "count": 1 } @@ -1888,9 +1882,6 @@ } }, "src/app/(dashboard)/ui-theme/UIThemeSettings.tsx": { - "no-restricted-imports": { - "count": 1 - }, "no-restricted-syntax": { "count": 3 }, diff --git a/ui/litellm-dashboard/src/app/(dashboard)/budgets/_components/budget_panel.tsx b/ui/litellm-dashboard/src/app/(dashboard)/budgets/_components/budget_panel.tsx index 6d5c0c7be08..2cf2a4c06ec 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/budgets/_components/budget_panel.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/budgets/_components/budget_panel.tsx @@ -3,9 +3,10 @@ * */ -import { Button, Tab, TabGroup, TabList, TabPanel, TabPanels, Text } from "@tremor/react"; import React, { useState } from "react"; import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; +import { Button } from "@/components/ui/button"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import DeleteResourceModal from "@/components/common_components/DeleteResourceModal"; import NotificationsManager from "@/components/molecules/notifications_manager"; import { useBudgets, useDeleteBudget, budgetItem } from "@/app/(dashboard)/hooks/budgets/useBudgets"; @@ -73,76 +74,82 @@ const BudgetPanel: React.FC = ({ accessToken }) => { return (
{canModify && ( - )} - - - Budgets - Examples - - - -
- - {selectedBudget && ( - - )} - Create a budget to assign to customers. - + + + Budgets + + + Examples + + + +
+ + {selectedBudget && ( + - -
- - -
- How to use budget id - - - Assign Budget to Customer - Test it (Curl) - Test it (OpenAI SDK) - - - - {CREATE_END_USER_CURL_COMMAND} - - - {CHAT_COMPLETIONS_CURL_COMMAND} - - - {OPENAI_SDK_PYTHON_CODE} - - - -
-
- - + )} +

Create a budget to assign to customers.

+ + +
+ + +
+

How to use budget id

+ + + + Assign Budget to Customer + + + Test it (Curl) + + + Test it (OpenAI SDK) + + + + {CREATE_END_USER_CURL_COMMAND} + + + {CHAT_COMPLETIONS_CURL_COMMAND} + + + {OPENAI_SDK_PYTHON_CODE} + + +
+
+
); }; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/skills/_components/ClaudeCodePluginsPanel.tsx b/ui/litellm-dashboard/src/app/(dashboard)/skills/_components/ClaudeCodePluginsPanel.tsx index 5a638f9ae79..47fc8f41307 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/skills/_components/ClaudeCodePluginsPanel.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/skills/_components/ClaudeCodePluginsPanel.tsx @@ -1,6 +1,14 @@ import React, { useState, useEffect } from "react"; -import { Button } from "@tremor/react"; -import { Modal } from "antd"; +import { Button } from "@/components/ui/button"; +import { + AlertDialog, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from "@/components/ui/alert-dialog"; import { getClaudeCodePluginsList, deleteClaudeCodePlugin } from "@/components/networking"; import AddPluginForm from "./add_plugin_form"; import PluginTable from "./PluginTable"; @@ -115,20 +123,28 @@ const ClaudeCodePluginsPanel: React.FC = ({ accessT /> {pluginToDelete && ( - setPluginToDelete(null)} - confirmLoading={isDeleting} - okText="Delete" - okButtonProps={{ danger: true }} + { + if (!open) setPluginToDelete(null); + }} > -

- Are you sure you want to delete skill: {pluginToDelete.displayName}? -

-

This action cannot be undone.

-
+ + + Delete Skill + + Are you sure you want to delete skill: {pluginToDelete.displayName}? + +

This action cannot be undone.

+
+ + Cancel + + +
+ )} ); diff --git a/ui/litellm-dashboard/src/app/(dashboard)/ui-theme/UIThemeSettings.tsx b/ui/litellm-dashboard/src/app/(dashboard)/ui-theme/UIThemeSettings.tsx index 15a3de0f78b..035d87c4e9b 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/ui-theme/UIThemeSettings.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/ui-theme/UIThemeSettings.tsx @@ -1,5 +1,9 @@ import React, { useState, useEffect } from "react"; -import { Card, Title, Text, TextInput, Button } from "@tremor/react"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent } from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { UiLoadingSpinner } from "@/components/ui/ui-loading-spinner"; import { useTheme } from "@/contexts/ThemeContext"; import { getProxyBaseUrl, getGlobalLitellmHeaderName } from "@/components/networking"; import NotificationsManager from "@/components/molecules/notifications_manager"; @@ -113,50 +117,58 @@ const UIThemeSettings: React.FC = ({ userID, userRole, acc return (
- UI Theme Customization - Customize your LiteLLM admin dashboard with a custom logo and favicon. +

UI Theme Customization

+

+ Customize your LiteLLM admin dashboard with a custom logo and favicon. +

- -
+ +
- Custom Logo URL - + Custom Logo URL + + { - setLogoUrlInput(v); - setLogoUrl(v || null); + onChange={(event) => { + setLogoUrlInput(event.target.value); + setLogoUrl(event.target.value || null); }} - className="w-full" /> - +

Enter a URL for your custom logo or leave empty for default - +

- Custom Favicon URL - + Custom Favicon URL + + { - setFaviconUrlInput(v); - setFaviconUrl(v || null); + onChange={(event) => { + setFaviconUrlInput(event.target.value); + setFaviconUrl(event.target.value || null); }} - className="w-full" /> - +

Enter a URL for your custom favicon (.ico, .png, or .svg) or leave empty for default - +

- -
-
+
);