+ {/* Header with Back Button */}
+
+
+
{plugin.name}
+ {plugin.version && (
+
+ v{plugin.version}
+
+ )}
+ {plugin.category && (
+
+ {plugin.category}
+
+ )}
+
+ {plugin.enabled ? "Enabled" : "Disabled"}
+
+
+
+ {/* Install Command */}
+
+
+
+
Install Command
+
+ {installCommand}
+
+
+
+ copyToClipboard(installCommand)}
+ className="ml-4"
+ >
+ Copy
+
+
+
+
+
+ {/* Plugin Details */}
+
+ Plugin Details
+
+ {/* Plugin ID */}
+
+
Plugin ID
+
+ {plugin.id}
+ copyToClipboard(plugin.id)}
+ />
+
+
+
+ {/* Name */}
+
+ Name
+ {plugin.name}
+
+
+ {/* Version */}
+
+ Version
+
+ {plugin.version || "N/A"}
+
+
+
+ {/* Source */}
+
+
Source
+
+
+ {getSourceDisplayText(plugin.source)}
+
+ {sourceLink && (
+
+
+
+ )}
+
+
+
+ {/* Category */}
+
+
Category
+
+ {plugin.category ? (
+
+ {plugin.category}
+
+ ) : (
+ Uncategorized
+ )}
+
+
+
+ {/* Enabled Status */}
+ {isAdmin && (
+
+
Status
+
+
+
+ {plugin.enabled
+ ? "Plugin is enabled and visible in marketplace"
+ : "Plugin is disabled and hidden from marketplace"}
+
+
+
+ )}
+
+
+
+ {/* Description */}
+ {plugin.description && (
+
+ Description
+ {plugin.description}
+
+ )}
+
+ {/* Keywords */}
+ {plugin.keywords && plugin.keywords.length > 0 && (
+
+ Keywords
+
+ {plugin.keywords.map((keyword, index) => (
+
+ {keyword}
+
+ ))}
+
+
+ )}
+
+ {/* Author Information */}
+ {plugin.author && (
+
+ Author Information
+
+ {plugin.author.name && (
+
+ Name
+
+ {plugin.author.name}
+
+
+ )}
+ {plugin.author.email && (
+
+ )}
+
+
+ )}
+
+ {/* Additional Links */}
+ {plugin.homepage && (
+
+ Homepage
+
+ {plugin.homepage}
+
+
+
+ )}
+
+ {/* Timestamps */}
+
+ Metadata
+
+
+ Created At
+
+ {formatDateString(plugin.created_at)}
+
+
+
+ Updated At
+
+ {formatDateString(plugin.updated_at)}
+
+
+ {plugin.created_by && (
+
+ Created By
+ {plugin.created_by}
+
+ )}
+
+
+
+ );
+};
+
+export default PluginInfoView;
diff --git a/ui/litellm-dashboard/src/components/claude_code_plugins/plugin_table.tsx b/ui/litellm-dashboard/src/components/claude_code_plugins/plugin_table.tsx
new file mode 100644
index 0000000000..df9fb9303c
--- /dev/null
+++ b/ui/litellm-dashboard/src/components/claude_code_plugins/plugin_table.tsx
@@ -0,0 +1,351 @@
+import React, { useState } from "react";
+import {
+ Table,
+ TableBody,
+ TableCell,
+ TableHead,
+ TableHeaderCell,
+ TableRow,
+ Button,
+ Badge,
+} from "@tremor/react";
+import {
+ SwitchVerticalIcon,
+ ChevronUpIcon,
+ ChevronDownIcon,
+ TrashIcon,
+} from "@heroicons/react/outline";
+import { Tooltip, Switch } from "antd";
+import { CopyOutlined } from "@ant-design/icons";
+import { Plugin } from "./types";
+import {
+ getCategoryBadgeColor,
+ formatDateString,
+} from "./helpers";
+import {
+ enableClaudeCodePlugin,
+ disableClaudeCodePlugin,
+} from "../networking";
+import NotificationsManager from "../molecules/notifications_manager";
+import {
+ ColumnDef,
+ flexRender,
+ getCoreRowModel,
+ getSortedRowModel,
+ SortingState,
+ useReactTable,
+} from "@tanstack/react-table";
+
+interface PluginTableProps {
+ pluginsList: Plugin[];
+ isLoading: boolean;
+ onDeleteClick: (pluginName: string, displayName: string) => void;
+ accessToken: string | null;
+ onPluginUpdated: () => void;
+ isAdmin: boolean;
+ onPluginClick: (pluginId: string) => void;
+}
+
+const PluginTable: React.FC