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