diff --git a/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/CacheLeakageCard.tsx b/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/CacheLeakageCard.tsx index c0b4150b4f4..ca47b71725d 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/CacheLeakageCard.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/CacheLeakageCard.tsx @@ -40,7 +40,7 @@ const compareRows = (a: CacheLeakageRow, b: CacheLeakageRow, sort: SortState): n const InfoTooltip = ({ info }: { info: string }) => ( }> - + {info} @@ -72,7 +72,7 @@ const SortableHead = ({ className="inline-flex items-center gap-1 font-medium hover:text-foreground" > {label} - + diff --git a/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/TierTurnsChart.tsx b/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/TierTurnsChart.tsx index 5b9b8563baa..e55ebc07656 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/TierTurnsChart.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/cost-optimization/_components/TierTurnsChart.tsx @@ -133,7 +133,7 @@ const TierTurnsChart: React.FC = ({ view, autoRouters }) => {slice.tier} {Math.round((100 * slice.turns) / total).toLocaleString()}%

{slice.models.length > 0 && ( -

{slice.models.join(", ")}

+

{slice.models.join(", ")}

)} diff --git a/ui/litellm-dashboard/src/app/(dashboard)/cost-tracking/_components/cost_tracking_settings.tsx b/ui/litellm-dashboard/src/app/(dashboard)/cost-tracking/_components/cost_tracking_settings.tsx index fa4e8daf9d0..3fce928ed67 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/cost-tracking/_components/cost_tracking_settings.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/cost-tracking/_components/cost_tracking_settings.tsx @@ -223,7 +223,7 @@ const CostTrackingSettings: React.FC = ({ userID, use ) : (
= ({ userID, use ) : (
+
Token Pricing:{" "} {result.input_cost_per_token && ( Input ${formatNumberWithCommas(result.input_cost_per_token * 1_000_000, 2)}/1M @@ -294,17 +294,17 @@ const MultiCostResults: React.FC = ({ multiResult, timePe {record.error ? ( - - + - ) : ( {formatCost(record.cost_per_request)} )} {record.error ? ( - - + - ) : ( 0 ? "text-warning" : "text-muted-foreground/70"}`} + className={`font-mono text-sm ${(record.margin_cost_per_request ?? 0) > 0 ? "text-warning" : "text-muted-foreground"}`} > {formatCost(record.margin_cost_per_request)} @@ -312,7 +312,7 @@ const MultiCostResults: React.FC = ({ multiResult, timePe {record.error ? ( - - + - ) : ( {formatCost(periodCost)} )} @@ -325,7 +325,7 @@ const MultiCostResults: React.FC = ({ multiResult, timePe aria-expanded={isExpanded} aria-label={`${isExpanded ? "Hide" : "Show"} cost breakdown for ${record.model}`} onClick={() => toggleExpanded(record.id)} - className="text-muted-foreground/70 hover:text-muted-foreground" + className="text-muted-foreground hover:text-foreground" > {isExpanded ? : } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/cost-tracking/_components/provider_margin_table.tsx b/ui/litellm-dashboard/src/app/(dashboard)/cost-tracking/_components/provider_margin_table.tsx index fa322d1b4d1..04823ac4aa0 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/cost-tracking/_components/provider_margin_table.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/cost-tracking/_components/provider_margin_table.tsx @@ -138,7 +138,7 @@ const ProviderMarginTable: React.FC = ({ autoFocus /> % - + + + $ 150 ? "text-destructive" : row.original.avgLatency > 50 diff --git a/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/TeamGuardrailsTab.tsx b/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/TeamGuardrailsTab.tsx index cc2d2051a24..c9de758f50d 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/TeamGuardrailsTab.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/TeamGuardrailsTab.tsx @@ -358,7 +358,7 @@ function GuardrailCard({ @@ -727,7 +727,7 @@ function DetailPanel({
@@ -218,7 +220,7 @@ function SubmissionRulesPanel({ requiredFields, onChange, onSave, isSaving }: Su
{field.label}
-
{field.description}
+
{field.description}
); @@ -235,7 +237,7 @@ function SubmissionRulesPanel({ requiredFields, onChange, onSave, isSaving }: Su await onSave(); setExpanded(false); }} - className="px-4 py-1.5 text-sm font-medium text-white bg-info hover:bg-info/80 disabled:opacity-50 rounded-md transition-colors" + className="px-4 py-1.5 text-sm font-medium text-info-foreground bg-info hover:bg-info/80 disabled:opacity-50 rounded-md transition-colors" > {isSaving ? "Saving…" : "Save Rules"} @@ -296,11 +298,11 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe )} {server.url && (
- + {server.url}
)} -
+
Transport: {server.transport ?? "sse"} @@ -322,7 +324,7 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe @@ -341,7 +343,7 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe @@ -367,7 +369,11 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe allPassed ? "bg-success" : "bg-destructive" }`} > - {allPassed ? : } + {allPassed ? ( + + ) : ( + + )}
@@ -383,7 +389,7 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe @@ -392,7 +398,7 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe @@ -567,13 +573,13 @@ export function MCPSubmissionsTab({ accessToken }: MCPSubmissionsTabProps) {
- + setSearch(e.target.value)} - className="w-full pl-9 pr-4 py-2 border border-border rounded-md text-sm text-foreground placeholder-muted-foreground/70 focus:outline-hidden focus:ring-1 focus:ring-ring focus:border-info" + className="w-full pl-9 pr-4 py-2 border border-border rounded-md text-sm text-foreground placeholder:text-muted-foreground focus:outline-hidden focus:ring-1 focus:ring-ring focus:border-info" />
setSearchPrompt(e.target.value)} placeholder="Search prompts..." - className="w-full border border-border rounded-lg pl-8 pr-3 py-1.5 text-xs placeholder:text-muted-foreground/70 focus:outline-hidden focus:ring-2 focus:ring-blue-500/20 focus:border-info" + className="w-full border border-border rounded-lg pl-8 pr-3 py-1.5 text-xs placeholder:text-muted-foreground focus:outline-hidden focus:ring-2 focus:ring-blue-500/20 focus:border-info" />
@@ -883,7 +883,7 @@ export default function ComplianceUI({ > Select All - · + · @@ -985,7 +985,7 @@ export default function ComplianceUI({ Required columns:{" "} prompt,{" "} expected_result{" "} - (fail or pass) + (fail or pass)

Optional columns:{" "} @@ -1049,14 +1049,14 @@ export default function ComplianceUI({ className="w-full flex items-center gap-2 px-3 py-2.5 text-left bg-muted hover:bg-accent transition-colors rounded-lg border border-border" > {isExpanded ? ( - + ) : ( - + )}

{fw.name} - {fwPromptCount} prompts + {fwPromptCount} prompts
{fwSelectedCount > 0 && ( @@ -1092,9 +1092,9 @@ export default function ComplianceUI({ className="w-full flex items-center gap-1.5 px-2.5 py-2 text-left hover:bg-accent transition-colors" > {isCatExpanded ? ( - + ) : ( - + )} {category.name} - + {category.prompts.length} {selectedInCat > 0 && ( @@ -1118,7 +1118,7 @@ export default function ComplianceUI({ {isCatExpanded && (
-

+

{category.description}

) : ( -

+

No policies or guardrails selected — select above to test against specific rules.

)} @@ -1245,7 +1245,7 @@ export default function ComplianceUI({
- +

Type a prompt below to quickly test it.

@@ -1254,10 +1254,10 @@ export default function ComplianceUI({ {quickTestMessages.map((msg) => (

{msg.type === "system" && ( @@ -1284,7 +1284,7 @@ export default function ComplianceUI({ {isQuickTesting && (

- +
)} @@ -1300,23 +1300,23 @@ export default function ComplianceUI({ onKeyDown={handleQuickTestKeyDown} placeholder="Enter text to test..." rows={3} - className="w-full px-3 pt-3 pb-1 text-sm text-foreground placeholder:text-muted-foreground/70 focus:outline-hidden resize-none" + className="w-full px-3 pt-3 pb-1 text-sm text-foreground placeholder:text-muted-foreground focus:outline-hidden resize-none" />
- + Press Enter to submit ·{" "} Shift+Enter for new line - {quickTestInput.length} + {quickTestInput.length}