From d016ec842e1e01d975a2f6d9d108d69aba7ad0e7 Mon Sep 17 00:00:00 2001 From: imagineer99 Date: Fri, 8 May 2026 17:14:29 +0100 Subject: [PATCH] style: add provider API key visibility toggle --- .../features/chat/chat-providers-dialog.tsx | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/studio/frontend/src/features/chat/chat-providers-dialog.tsx b/studio/frontend/src/features/chat/chat-providers-dialog.tsx index bfec4d1af3..409630f436 100644 --- a/studio/frontend/src/features/chat/chat-providers-dialog.tsx +++ b/studio/frontend/src/features/chat/chat-providers-dialog.tsx @@ -30,6 +30,7 @@ import { Wifi02Icon, } from "@hugeicons/core-free-icons"; import { HugeiconsIcon } from "@hugeicons/react"; +import { Eye, EyeOff } from "lucide-react"; import { AnimatePresence, motion, useReducedMotion } from "motion/react"; import { useEffect, useMemo, useRef, useState } from "react"; import { toast } from "sonner"; @@ -136,6 +137,7 @@ export function ChatProvidersSettings({ const [page, setPage] = useState<"list" | "form">("list"); const [providerType, setProviderType] = useState(""); const [apiKey, setApiKey] = useState(""); + const [showApiKey, setShowApiKey] = useState(false); const [baseUrlDraft, setBaseUrlDraft] = useState(""); const [editingProviderId, setEditingProviderId] = useState( null, @@ -292,6 +294,7 @@ export function ChatProvidersSettings({ function resetForm() { setEditingProviderId(null); setApiKey(""); + setShowApiKey(false); setBaseUrlDraft(""); setAvailableModels([]); setSelectedModelIds([]); @@ -575,6 +578,7 @@ export function ChatProvidersSettings({ setProviderType(provider.providerType); setCustomProviderName(provider.name || "Custom"); setApiKey(getExternalProviderApiKey(provider.id)); + setShowApiKey(false); setBaseUrlDraft(provider.baseUrl); setModelSearchQuery(""); if (provider.providerType === CUSTOM_PROVIDER_TYPE) { @@ -764,14 +768,29 @@ export function ChatProvidersSettings({ Stored locally.

- setApiKey(event.target.value)} - placeholder="Enter API key" - className="h-9 text-sm" - /> +
+ setApiKey(event.target.value)} + placeholder="Enter API key" + className="h-9 pr-9 text-sm" + /> + +
{isCustomProvider ? (