diff --git a/ui/litellm-dashboard/.eslintrc.json b/ui/litellm-dashboard/.eslintrc.json index 27cba563d6f..5d78bd2fec6 100644 --- a/ui/litellm-dashboard/.eslintrc.json +++ b/ui/litellm-dashboard/.eslintrc.json @@ -58,6 +58,7 @@ "src/components/view_logs/ToolsSection/ToolItem.tsx", "src/components/guardrails/content_filter/PatternTable.tsx", "src/components/guardrails/content_filter/ContentFilterDisplay.tsx", + "src/components/prompts/prompt_editor_view/PromptEditorHeader.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/components/prompts/prompt_editor_view/ModelConfigCard.tsx b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ModelConfigCard.tsx index 1752fdc22b5..3cf528cf711 100644 --- a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ModelConfigCard.tsx +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ModelConfigCard.tsx @@ -1,7 +1,13 @@ import React, { useState } from "react"; -import { Text } from "@tremor/react"; -import { Input } from "antd"; -import { SettingsIcon } from "lucide-react"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Settings } from "lucide-react"; import ModelSelector from "../../common_components/ModelSelector"; interface ModelConfigCardProps { @@ -36,63 +42,53 @@ const ModelConfigCard: React.FC = ({ /> - + - {showConfig && ( -
-
-
-

Model Parameters

- -
-
-
-
- Temperature - onTemperatureChange(parseFloat(e.target.value) || 0)} - className="w-20" - /> -
+ + + + Model Parameters + +
+
+
+ Temperature + + onTemperatureChange(parseFloat(e.target.value) || 0) + } + className="w-20 h-8" + />
-
-
- Max Tokens - onMaxTokensChange(parseInt(e.target.value) || 1000)} - className="w-24" - /> -
+
+
+
+ Max Tokens + + onMaxTokensChange(parseInt(e.target.value) || 1000) + } + className="w-24 h-8" + />
-
- )} +
+
); }; export default ModelConfigCard; - diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptEditorHeader.tsx b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptEditorHeader.tsx index 0211a60ab4c..66476b4e299 100644 --- a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptEditorHeader.tsx +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptEditorHeader.tsx @@ -1,7 +1,14 @@ import React from "react"; -import { Button as TremorButton } from "@tremor/react"; -import { Input, Select } from "antd"; -import { ArrowLeftIcon, SaveIcon, ClockIcon } from "lucide-react"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { ArrowLeft, Clock, Save } from "lucide-react"; import PromptCodeSnippets from "./PromptCodeSnippets"; interface PromptEditorHeaderProps { @@ -41,35 +48,36 @@ const PromptEditorHeader: React.FC = ({ onEnvironmentChange, }) => { return ( -
+
- + onNameChange(e.target.value)} - className="text-base font-medium border-none shadow-none" - style={{ width: "200px" }} + className="text-base font-medium border-none shadow-none w-[200px] h-8" /> {version && ( - + {version} )} - + + + + + Development + Staging + Production + + + + Draft + + Unsaved changes
= ({ model={promptModel} promptVariables={promptVariables} accessToken={accessToken} - version={version?.replace('v', '') || "1"} + version={version?.replace("v", "") || "1"} proxySettings={proxySettings} /> {editMode && onShowHistory && ( - + )} - - {editMode ? "Update" : "Save"} - +
); }; export default PromptEditorHeader; - diff --git a/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/OutputCard.tsx b/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/OutputCard.tsx index 22f1708ee4b..dfd7b0f277e 100644 --- a/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/OutputCard.tsx +++ b/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/OutputCard.tsx @@ -1,16 +1,8 @@ -/** - * OutputCard - Displays output message with token count and cost - * Datadog-style: header with icon/metrics, content below - */ - -import { useState } from 'react'; -import { Typography } from 'antd'; +import { useState } from "react"; import MessageManager from "@/components/molecules/message_manager"; -import { ParsedMessage } from './prettyMessagesTypes'; -import { SectionHeader } from './SectionHeader'; -import { SimpleMessageBlock } from './SimpleMessageBlock'; - -const { Text } = Typography; +import { ParsedMessage } from "./prettyMessagesTypes"; +import { SectionHeader } from "./SectionHeader"; +import { SimpleMessageBlock } from "./SimpleMessageBlock"; interface OutputCardProps { message: ParsedMessage | null; @@ -18,26 +10,24 @@ interface OutputCardProps { outputCost?: number; } -export function OutputCard({ message, completionTokens, outputCost }: OutputCardProps) { +export function OutputCard({ + message, + completionTokens, + outputCost, +}: OutputCardProps) { const [isCollapsed, setIsCollapsed] = useState(false); const handleCopy = () => { if (!message) return; - - const content = message.content || ''; + + const content = message.content || ""; navigator.clipboard.writeText(content); - MessageManager.success('Output copied'); + MessageManager.success("Output copied"); }; if (!message) { return ( -
+
setIsCollapsed(!isCollapsed)} />
-
- +
+ No response data available - +
@@ -65,14 +54,7 @@ export function OutputCard({ message, completionTokens, outputCost }: OutputCard } return ( -
- {/* Datadog-style Header */} +
setIsCollapsed(!isCollapsed)} /> - {/* Content */}
-
+
); } -