From e432c211ae5bc5482b3c101468a473991b523af8 Mon Sep 17 00:00:00 2001
From: Ishaan Jaffer
Date: Thu, 19 Feb 2026 10:59:46 -0800
Subject: [PATCH] add Use AI button and template loading callback to
PolicyTemplates
---
.../src/components/policies/policy_templates.tsx | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/ui/litellm-dashboard/src/components/policies/policy_templates.tsx b/ui/litellm-dashboard/src/components/policies/policy_templates.tsx
index fdb9247ba9a..6951b368ef3 100644
--- a/ui/litellm-dashboard/src/components/policies/policy_templates.tsx
+++ b/ui/litellm-dashboard/src/components/policies/policy_templates.tsx
@@ -116,6 +116,8 @@ const PolicyTemplateCard: React.FC = ({
interface PolicyTemplatesProps {
onUseTemplate: (templateData: any) => void;
+ onOpenAiSuggestion: () => void;
+ onTemplatesLoaded?: (templates: any[]) => void;
accessToken: string | null;
}
@@ -128,7 +130,7 @@ const iconMap: Record>
CheckCircleIcon: CheckCircleIcon,
};
-const PolicyTemplates: React.FC = ({ onUseTemplate, accessToken }) => {
+const PolicyTemplates: React.FC = ({ onUseTemplate, onOpenAiSuggestion, onTemplatesLoaded, accessToken }) => {
const [templates, setTemplates] = useState([]);
const [isLoading, setIsLoading] = useState(false);
const [selectedTags, setSelectedTags] = useState>(new Set());
@@ -179,6 +181,7 @@ const PolicyTemplates: React.FC = ({ onUseTemplate, access
try {
const data = await getPolicyTemplates(accessToken);
setTemplates(data);
+ onTemplatesLoaded?.(data);
} catch (error) {
console.error("Error fetching policy templates:", error);
message.error("Failed to fetch policy templates");
@@ -210,6 +213,16 @@ const PolicyTemplates: React.FC = ({ onUseTemplate, access
guardrails for your organization.
+