diff --git a/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/GuardrailTestPanel.tsx b/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/GuardrailTestPanel.tsx
index d19374f48ca..183d68da261 100644
--- a/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/GuardrailTestPanel.tsx
+++ b/ui/litellm-dashboard/src/app/(dashboard)/guardrails/_components/GuardrailTestPanel.tsx
@@ -2,6 +2,7 @@ import React, { useState } from "react";
import { Copy, Info } from "lucide-react";
import { toast } from "@/lib/toast";
import { Button } from "@/components/ui/button";
+import { Kbd } from "@/components/ui/kbd";
import { Textarea } from "@/components/ui/textarea";
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
import { UiLoadingSpinner } from "@/components/ui/ui-loading-spinner";
@@ -165,9 +166,7 @@ export function GuardrailTestPanel({
/>
- Press Enter to
- submit • Shift+Enter{" "}
- for new line
+ Press Enter to submit • Shift+Enter for new line
Characters: {inputText.length}
diff --git a/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/mcp_connect.tsx b/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/mcp_connect.tsx
index 81a3994070e..d609c9f2527 100644
--- a/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/mcp_connect.tsx
+++ b/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/mcp_connect.tsx
@@ -5,6 +5,7 @@ import React, { useId, useState } from "react";
import { Alert, AlertDescription, AlertTitle } from "@/components/shared/Alert";
import { Button } from "@/components/ui/button";
import { Card, CardContent } from "@/components/ui/card";
+import { Kbd } from "@/components/ui/kbd";
import { Label } from "@/components/ui/label";
import { Switch } from "@/components/ui/switch";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
@@ -369,8 +370,7 @@ const MCPConnect: React.FC = ({ currentServerAccessGroups = []
- Use the keyboard shortcut ⇧+⌘+J (Mac) or{" "}
- Ctrl+Shift+J (Windows/Linux)
+ Use the keyboard shortcut ⇧+⌘+J (Mac) or Ctrl+Shift+J (Windows/Linux)
@@ -380,9 +380,8 @@ const MCPConnect: React.FC
= ({ currentServerAccessGroups = []
- Copy the JSON configuration below and paste it into Cursor, then save with{" "}
- Cmd+S or{" "}
- Ctrl+S
+ Copy the JSON configuration below and paste it into Cursor, then save with Cmd+S or{" "}
+ Ctrl+S
}
diff --git a/ui/litellm-dashboard/src/app/(dashboard)/playground/components/complianceUI/ComplianceUI.tsx b/ui/litellm-dashboard/src/app/(dashboard)/playground/components/complianceUI/ComplianceUI.tsx
index db576ed03a5..ec4ac9a8b88 100644
--- a/ui/litellm-dashboard/src/app/(dashboard)/playground/components/complianceUI/ComplianceUI.tsx
+++ b/ui/litellm-dashboard/src/app/(dashboard)/playground/components/complianceUI/ComplianceUI.tsx
@@ -12,6 +12,7 @@ import { getGuardrailsList, testPoliciesAndGuardrails } from "@/components/netwo
import PolicySelector, { getPolicyOptionEntries } from "@/components/policies/PolicySelector";
import { Policy } from "@/components/policies/types";
import { makeOpenAIChatCompletionRequest } from "@/components/llm_calls/chat_completion";
+import { Kbd } from "@/components/ui/kbd";
import {
AlertTriangle,
BarChart3,
@@ -1306,10 +1307,7 @@ export default function ComplianceUI({
/>
- Press Enter to
- submit ·{" "}
- Shift+Enter for new
- line
+ Press Enter to submit · Shift+Enter for new line
{quickTestInput.length}
diff --git a/ui/litellm-dashboard/src/app/(dashboard)/policies/_components/ai_suggestion_modal.tsx b/ui/litellm-dashboard/src/app/(dashboard)/policies/_components/ai_suggestion_modal.tsx
index 50ffb89ae83..c7eb8aaec48 100644
--- a/ui/litellm-dashboard/src/app/(dashboard)/policies/_components/ai_suggestion_modal.tsx
+++ b/ui/litellm-dashboard/src/app/(dashboard)/policies/_components/ai_suggestion_modal.tsx
@@ -5,6 +5,7 @@ import { Card, CardContent } from "@/components/ui/card";
import { Checkbox } from "@/components/ui/checkbox";
import { Dialog, DialogContent, DialogTitle } from "@/components/ui/dialog";
import { Input } from "@/components/ui/input";
+import { Kbd } from "@/components/ui/kbd";
import { Textarea } from "@/components/ui/textarea";
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
import { UiLoadingSpinner } from "@/components/ui/ui-loading-spinner";
@@ -654,8 +655,7 @@ const AiSuggestionModal: React.FC = ({
/>
- Press Enter to
- submit
+ Press Enter to submit
diff --git a/ui/litellm-dashboard/src/components/CommandPalette/CommandPalette.tsx b/ui/litellm-dashboard/src/components/CommandPalette/CommandPalette.tsx
index 9b23dbebd6c..38bb987b7c4 100644
--- a/ui/litellm-dashboard/src/components/CommandPalette/CommandPalette.tsx
+++ b/ui/litellm-dashboard/src/components/CommandPalette/CommandPalette.tsx
@@ -7,6 +7,7 @@ import { usePathname, useRouter } from "next/navigation";
import { useKeys } from "@/app/(dashboard)/hooks/keys/useKeys";
import { useTeams } from "@/app/(dashboard)/hooks/teams/useTeams";
import { Dialog, DialogContent, DialogTitle } from "@/components/ui/dialog";
+import { Kbd } from "@/components/ui/kbd";
import { useTerminology } from "@/contexts/TerminologyContext";
import { DEBOUNCE_WAIT_MS } from "@/utils/debounceConstants";
import { keyDetailHref } from "@/utils/entityLinks";
@@ -31,9 +32,6 @@ interface PaletteGroup {
isLoading?: boolean;
}
-const shortcutChipClass =
- "rounded-sm border border-border border-b-2 bg-muted px-[3px] font-mono text-muted-foreground";
-
export function CommandPalette({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) {
if (!open) return null;
return ;
@@ -305,13 +303,13 @@ function CommandPaletteDialog({ setOpen }: { setOpen: (open: boolean) => void })
- ↵ Open
+ ↵ Open
- ↑↓ Navigate
+ ↑↓ Navigate
- esc Close
+ esc Close
diff --git a/ui/litellm-dashboard/src/components/CommandPalette/CommandPaletteHint.tsx b/ui/litellm-dashboard/src/components/CommandPalette/CommandPaletteHint.tsx
index 0a4c3fcda18..6fa362f4509 100644
--- a/ui/litellm-dashboard/src/components/CommandPalette/CommandPaletteHint.tsx
+++ b/ui/litellm-dashboard/src/components/CommandPalette/CommandPaletteHint.tsx
@@ -2,6 +2,7 @@
import { Search, X } from "lucide-react";
import { z } from "zod";
+import { Kbd } from "@/components/ui/kbd";
import { storageKey } from "@/lib/storage";
import type { PaletteScope } from "./utils";
import { useCommandPalette } from "./CommandPaletteProvider";
@@ -26,9 +27,7 @@ export function CommandPaletteHint({ scope, onDismiss }: CommandPaletteHintProps
{label}
-
- {shortcut}
-
+ {shortcut}
);
}
diff --git a/ui/litellm-dashboard/src/components/liteadmin/LiteAdmin.tsx b/ui/litellm-dashboard/src/components/liteadmin/LiteAdmin.tsx
index c512c3bd0af..198b90e9adf 100644
--- a/ui/litellm-dashboard/src/components/liteadmin/LiteAdmin.tsx
+++ b/ui/litellm-dashboard/src/components/liteadmin/LiteAdmin.tsx
@@ -29,6 +29,7 @@ import { Button } from "@/components/ui/button";
import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card";
import { Dialog, DialogClose, DialogContent, DialogDescription, DialogTitle } from "@/components/ui/dialog";
import { FieldError } from "@/components/ui/field";
+import { Kbd } from "@/components/ui/kbd";
import { Skeleton } from "@/components/ui/skeleton";
import { useTerminology } from "@/contexts/TerminologyContext";
import { cn } from "@/lib/cva.config";
@@ -185,7 +186,7 @@ export default function LiteAdminTrigger() {
>
{ARIA_AGENT_LABEL}
- ⌘J
+ ⌘J
);
}
diff --git a/ui/litellm-dashboard/src/components/shared/ShortcutHints.tsx b/ui/litellm-dashboard/src/components/shared/ShortcutHints.tsx
index 6ed5b374cbe..934ba5aa9e0 100644
--- a/ui/litellm-dashboard/src/components/shared/ShortcutHints.tsx
+++ b/ui/litellm-dashboard/src/components/shared/ShortcutHints.tsx
@@ -1,8 +1,9 @@
"use client";
-import { Fragment, type ReactNode } from "react";
+import { Fragment } from "react";
import { useHotkeysContext } from "react-hotkeys-hook";
+import { Kbd } from "@/components/ui/kbd";
import { cn } from "@/lib/cva.config";
type BoundShortcut = ReturnType["hotkeys"][number];
@@ -59,14 +60,6 @@ export function shortcutHints(shortcuts: readonly BoundShortcut[]): readonly Sho
>((hints, [key, shortcut]) => mergeAdjacent(hints, key, shortcut.description ?? ""), []);
}
-function Kbd({ children }: { children: ReactNode }) {
- return (
-
- {children}
-
- );
-}
-
/** The shortcuts active right now, read from what is bound rather than typed by hand. */
export function ShortcutHints({ className }: { className?: string }) {
const { hotkeys } = useHotkeysContext();
diff --git a/ui/litellm-dashboard/src/components/shared/search/SearchBox.tsx b/ui/litellm-dashboard/src/components/shared/search/SearchBox.tsx
index 4e45f8902f0..ae6d5a6ec09 100644
--- a/ui/litellm-dashboard/src/components/shared/search/SearchBox.tsx
+++ b/ui/litellm-dashboard/src/components/shared/search/SearchBox.tsx
@@ -8,9 +8,10 @@ import { Check, Copy, CornerDownLeft, Loader2, type LucideIcon, Search } from "l
import { Schema } from "prosemirror-model";
import { EditorState, Plugin, TextSelection, type Transaction } from "prosemirror-state";
import { Decoration, DecorationSet, type EditorView } from "prosemirror-view";
-import { type ComponentProps, createContext, type ReactNode, useContext, useId, useMemo, useState } from "react";
+import { type ComponentProps, createContext, useContext, useId, useMemo, useState } from "react";
import { Button } from "@/components/ui/button";
+import { Kbd } from "@/components/ui/kbd";
import { cn } from "@/lib/cva.config";
import { type FilterOp, languageOps, parseQuery, type QueryClause, type QueryLanguage } from "./language";
@@ -326,7 +327,7 @@ function Suggestions({ className, children, ...props }: SearchBoxSuggestionsProp
-
+
Select
@@ -392,12 +393,4 @@ function OperatorHints({ ops }: { ops: readonly FilterOp[] }) {
);
}
-function Kbd({ children }: { children: ReactNode }) {
- return (
-
- {children}
-
- );
-}
-
export const SearchBox = { Root, Input, Suggestions, CopyCommand } as const;