diff --git a/ui/desktop/src/components/settings_v2/extensions/modal/EnvVarsSection.tsx b/ui/desktop/src/components/settings_v2/extensions/modal/EnvVarsSection.tsx
index d79cb3a6..39d95e28 100644
--- a/ui/desktop/src/components/settings_v2/extensions/modal/EnvVarsSection.tsx
+++ b/ui/desktop/src/components/settings_v2/extensions/modal/EnvVarsSection.tsx
@@ -45,7 +45,7 @@ export default function EnvVarsSection({
value={envVar.key}
onChange={(e) => onChange(index, 'key', e.target.value)}
placeholder="Variable name"
- className={`w-full bg-bgSubtle border-borderSubtle text-textStandard`}
+ className={`w-full border-borderSubtle text-textStandard`}
/>
@@ -53,7 +53,7 @@ export default function EnvVarsSection({
value={envVar.value}
onChange={(e) => onChange(index, 'value', e.target.value)}
placeholder="Value"
- className={`w-full bg-bgSubtle border-borderSubtle text-textStandard`}
+ className={`w-full border-borderSubtle text-textStandard`}
/>
diff --git a/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionInfoFields.tsx b/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionInfoFields.tsx
new file mode 100644
index 00000000..b0bf0b74
--- /dev/null
+++ b/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionInfoFields.tsx
@@ -0,0 +1,57 @@
+import { Input } from '../../../ui/input';
+import Select from 'react-select';
+import React, { useState } from 'react';
+
+interface ExtensionInfoFieldsProps {
+ name: string;
+ type: 'stdio' | 'sse' | 'builtin';
+ onChange: (key: string, value: any) => void;
+ submitAttempted: boolean;
+}
+
+export default function ExtensionInfoFields({
+ name,
+ type,
+ onChange,
+ submitAttempted,
+}: ExtensionInfoFieldsProps) {
+ const isNameValid = () => {
+ return name.trim() !== '';
+ };
+
+ return (
+
+
+
+
+
onChange('name', e.target.value)}
+ placeholder="Enter extension name..."
+ className={`${!submitAttempted || isNameValid() ? 'border-borderSubtle' : 'border-red-500'} text-textStandard focus:border-borderStandard`}
+ />
+ {submitAttempted && !isNameValid() && (
+
Name is required
+ )}
+
+
+ {/* Type Dropdown */}
+
+
+
+
+ );
+}
diff --git a/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionModal.tsx b/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionModal.tsx
index 3e853de5..49026af9 100644
--- a/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionModal.tsx
+++ b/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionModal.tsx
@@ -8,6 +8,7 @@ import { ExtensionFormData } from '../utils';
import EnvVarsSection from './EnvVarsSection';
import ExtensionConfigFields from './ExtensionConfigFields';
import { PlusIcon, Edit, Trash2, AlertTriangle } from 'lucide-react';
+import ExtensionInfoFields from './ExtensionInfoFields';
interface ExtensionModalProps {
title: string;
@@ -172,50 +173,18 @@ export default function ExtensionModal({
) : (
<>
{/* Form Fields */}
- {/* Name */}
-
-
-
-
-
setFormData({ ...formData, name: e.target.value })}
- placeholder="Enter extension name..."
- className={`${!submitAttempted || formData.name.trim() !== '' ? 'border-borderSubtle' : 'border-red-500'} text-textStandard focus:border-borderStandard`}
- />
- {submitAttempted && !isNameValid() && (
-
Name is required
- )}
-
-
- {/*Type Dropdown */}
-
-
-
-
+ {/* Name and Type */}
+ setFormData({ ...formData, [key]: value })}
+ submitAttempted={submitAttempted}
+ />
{/* Divider */}
- {/* Config Fields */}
+ {/* Command */}