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 - 统一底部按钮样式 */}
+
+