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.

+