From 3256b2f842e00e19af3164cb3210435241e65a5a Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 17 Sep 2025 09:47:44 +0800 Subject: [PATCH] feat(ui): unify modal window styles for common config editor - Unified close button with X icon (size 18) matching main modal style - Added Save icon to save button with consistent blue theme styling - Aligned window structure with main modal (padding, borders, backdrop) - Added ESC key support to close modal - Enabled click-outside-to-close functionality - Standardized text sizes (xl for title, sm for buttons and errors) - Consistent hover effects and transitions across all buttons - Matched footer background color with other modals (gray-100/gray-800) --- .../ProviderForm/ClaudeConfigEditor.tsx | 76 +++++++++++++------ 1 file changed, 54 insertions(+), 22 deletions(-) diff --git a/src/components/ProviderForm/ClaudeConfigEditor.tsx b/src/components/ProviderForm/ClaudeConfigEditor.tsx index 3608dc4..fb8bc27 100644 --- a/src/components/ProviderForm/ClaudeConfigEditor.tsx +++ b/src/components/ProviderForm/ClaudeConfigEditor.tsx @@ -1,5 +1,6 @@ import React, { useEffect, useState } from "react"; import JsonEditor from "../JsonEditor"; +import { X, Save } from "lucide-react"; interface ClaudeConfigEditorProps { value: string; @@ -54,6 +55,20 @@ const ClaudeConfigEditor: React.FC = ({ } }, [commonConfigError, isCommonConfigModalOpen]); + // 支持按下 ESC 关闭弹窗 + useEffect(() => { + if (!isCommonConfigModalOpen) return; + + const onKeyDown = (e: KeyboardEvent) => { + if (e.key === "Escape") { + e.preventDefault(); + closeModal(); + } + }; + window.addEventListener("keydown", onKeyDown); + return () => window.removeEventListener("keydown", onKeyDown); + }, [isCommonConfigModalOpen]); + const closeModal = () => { setIsCommonConfigModalOpen(false); }; @@ -106,30 +121,37 @@ const ClaudeConfigEditor: React.FC = ({ 完整的 Claude Code settings.json 配置内容

{isCommonConfigModalOpen && ( -
-
-
-
-
-

- 编辑通用配置片段 -

-

- 该片段会在勾选“写入通用配置”时合并到 settings.json 中 -

-
+
{ + if (e.target === e.currentTarget) closeModal(); + }} + > + {/* Backdrop - 统一背景样式 */} +
+ + {/* Modal - 统一窗口样式 */} +
+ {/* Header - 统一标题栏样式 */} +
+

+ 编辑通用配置片段 +

-
+ + {/* Content - 统一内容区域样式 */} +
+

+ 该片段会在勾选"写入通用配置"时合并到 settings.json 中 +

= ({ rows={12} /> {commonConfigError && ( -

+

{commonConfigError}

)}
-
+ + {/* Footer - 统一底部按钮样式 */} +
+