import React, { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import JsonEditor from "@/components/JsonEditor"; interface GeminiEnvSectionProps { value: string; onChange: (value: string) => void; onBlur?: () => void; error?: string; } /** * GeminiEnvSection - .env editor section for Gemini environment variables */ export const GeminiEnvSection: React.FC = ({ value, onChange, onBlur, error, }) => { const { t } = useTranslation(); const [isDarkMode, setIsDarkMode] = useState(false); useEffect(() => { setIsDarkMode(document.documentElement.classList.contains("dark")); const observer = new MutationObserver(() => { setIsDarkMode(document.documentElement.classList.contains("dark")); }); observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"], }); return () => observer.disconnect(); }, []); const handleChange = (newValue: string) => { onChange(newValue); if (onBlur) { onBlur(); } }; return (
{error && (

{error}

)} {!error && (

{t("geminiConfig.envFileHint", { defaultValue: "使用 .env 格式配置 Gemini 环境变量", })}

)}
); }; interface GeminiConfigSectionProps { value: string; onChange: (value: string) => void; useCommonConfig: boolean; onCommonConfigToggle: (checked: boolean) => void; onEditCommonConfig: () => void; commonConfigError?: string; configError?: string; } /** * GeminiConfigSection - Config JSON editor section with common config support */ export const GeminiConfigSection: React.FC = ({ value, onChange, useCommonConfig, onCommonConfigToggle, onEditCommonConfig, commonConfigError, configError, }) => { const { t } = useTranslation(); const [isDarkMode, setIsDarkMode] = useState(false); useEffect(() => { setIsDarkMode(document.documentElement.classList.contains("dark")); const observer = new MutationObserver(() => { setIsDarkMode(document.documentElement.classList.contains("dark")); }); observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"], }); return () => observer.disconnect(); }, []); return (
{commonConfigError && (

{commonConfigError}

)} {configError && (

{configError}

)} {!configError && (

{t("geminiConfig.configJsonHint", { defaultValue: "使用 JSON 格式配置 Gemini 扩展参数(可选)", })}

)}
); };