From 1d44b1ba41987cddeb8096fadba8190fab465cbb Mon Sep 17 00:00:00 2001 From: Butui Hu Date: Sat, 2 May 2026 21:36:07 +0800 Subject: [PATCH] feat(universal-provider): add duplicate action for universal providers (#2416) Signed-off-by: Hu Butui --- .../universal/UniversalProviderCard.tsx | 13 +++++++- .../universal/UniversalProviderPanel.tsx | 31 +++++++++++++++++++ src/i18n/locales/en.json | 3 ++ src/i18n/locales/ja.json | 3 ++ src/i18n/locales/zh.json | 3 ++ 5 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/components/universal/UniversalProviderCard.tsx b/src/components/universal/UniversalProviderCard.tsx index b75bb2ef0..4ec21a50b 100644 --- a/src/components/universal/UniversalProviderCard.tsx +++ b/src/components/universal/UniversalProviderCard.tsx @@ -1,5 +1,5 @@ import { useTranslation } from "react-i18next"; -import { Edit2, Trash2, RefreshCw, Globe } from "lucide-react"; +import { Edit2, Trash2, RefreshCw, Globe, Copy } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ProviderIcon } from "@/components/ProviderIcon"; import type { UniversalProvider } from "@/types"; @@ -9,6 +9,7 @@ interface UniversalProviderCardProps { onEdit: (provider: UniversalProvider) => void; onDelete: (id: string) => void; onSync: (id: string) => void; + onDuplicate: (provider: UniversalProvider) => void; } export function UniversalProviderCard({ @@ -16,6 +17,7 @@ export function UniversalProviderCard({ onEdit, onDelete, onSync, + onDuplicate, }: UniversalProviderCardProps) { const { t } = useTranslation(); @@ -53,6 +55,15 @@ export function UniversalProviderCard({ > +