diff --git a/ui/litellm-dashboard/src/components/templates/KeyInfoHeader.tsx b/ui/litellm-dashboard/src/components/templates/KeyInfoHeader.tsx
index 93ebae9c4be..a73a3bbcc28 100644
--- a/ui/litellm-dashboard/src/components/templates/KeyInfoHeader.tsx
+++ b/ui/litellm-dashboard/src/components/templates/KeyInfoHeader.tsx
@@ -1,22 +1,28 @@
-import React from "react";
-import { Button, Typography, Tooltip, Space, Divider, Flex } from "antd";
+import React, { useState } from "react";
+import { Button } from "@/components/ui/button";
import {
- ArrowLeftOutlined,
- SyncOutlined,
- DeleteOutlined,
- PlusOutlined,
- UserOutlined,
- MailOutlined,
- CalendarOutlined,
- ClockCircleOutlined,
- ThunderboltOutlined,
- SafetyCertificateOutlined,
- TransactionOutlined,
-} from "@ant-design/icons";
+ Tooltip,
+ TooltipContent,
+ TooltipProvider,
+ TooltipTrigger,
+} from "@/components/ui/tooltip";
+import {
+ ArrowLeft,
+ Calendar,
+ Check,
+ Clock,
+ Copy,
+ Mail,
+ Plus,
+ RefreshCcw,
+ Shield,
+ Trash2,
+ User,
+ Wallet,
+ Zap,
+} from "lucide-react";
import LabeledField from "../common_components/LabeledField";
-const { Title, Text } = Typography;
-
export interface KeyInfoData {
keyName: string;
keyId: string;
@@ -41,6 +47,48 @@ interface KeyInfoHeaderProps {
regenerateTooltip?: string;
}
+const CopyableInline: React.FC<{
+ text: string;
+ label: string;
+ copyTooltip: string;
+}> = ({ text, label, copyTooltip }) => {
+ const [copied, setCopied] = useState(false);
+ const handleCopy = async () => {
+ try {
+ await navigator.clipboard.writeText(text);
+ setCopied(true);
+ setTimeout(() => setCopied(false), 1500);
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ } catch (_err) {
+ /* noop */
+ }
+ };
+ return (
+
+ {label}
+