From cf2ff4c63bedda8aa136d3add2c13feda0b7f419 Mon Sep 17 00:00:00 2001 From: tin-berri Date: Tue, 28 Jul 2026 10:12:00 -0700 Subject: [PATCH] Fix cache leakage card layout to keep date picker on right (#34885) * Fix cache leakage card layout to keep date picker on right and prevent content overlap Removes flex-wrap and mt-3 to ensure date picker stays pinned to the right side of the card header regardless of zoom level, preventing it from covering card content below * Remove overflow-hidden from Card to allow dropdowns and overlays to display fully Fixes date picker dropdown being clipped when opened in cards like the Cache Leakage Card. By removing overflow-hidden from the Card container, popovers, dropdowns, and other overflow content can now display properly without being clipped by the card boundaries. * Make cache leakage card descriptions consistent with line clamping Adds line-clamp-2 to ensure both 'by model' and 'by virtual key' cards maintain consistent height. Removes conditional anthropic-specific text that caused height variations between dimensions. (cherry picked from commit d91fd084f7140f53cee67696fbd70edf84818a9a) --- .../cost-optimization/_components/CacheLeakageCard.tsx | 4 +--- ui/litellm-dashboard/src/components/ui/card.tsx | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) 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 4f1cfc49569..bb2cb865877 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 @@ -105,10 +105,9 @@ const CacheLeakageCard: React.FC = ({ activity }) => {
Cache leakage by {dimension === "model" ? "model" : "virtual key"} -

+

{subject} sending large volumes of uncached input with a low cache hit rate are likely missing prompt caching. Potential savings is approximate: uncached input priced at the realized cache-read discount. - {dimension === "model" ? " Limited to Anthropic (Claude) models, which support prompt caching." : ""}

@@ -118,7 +117,6 @@ const CacheLeakageCard: React.FC = ({ activity }) => { setDimension(value === "model" ? "model" : "key")} - className="mt-3" > By virtual key diff --git a/ui/litellm-dashboard/src/components/ui/card.tsx b/ui/litellm-dashboard/src/components/ui/card.tsx index 3fc0aa65264..1490c2ee908 100644 --- a/ui/litellm-dashboard/src/components/ui/card.tsx +++ b/ui/litellm-dashboard/src/components/ui/card.tsx @@ -9,7 +9,7 @@ const Card = React.forwardRefimg:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(4)] *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", + "group/card flex flex-col gap-(--card-spacing) rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground shadow-xs ring-1 ring-foreground/10 [--card-spacing:--spacing(6)] has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(4)] *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", className, )} {...props}