diff --git a/ui/src/components/profiles/profile-create-dialog.tsx b/ui/src/components/profiles/profile-create-dialog.tsx index 30f46e30..37f92035 100644 --- a/ui/src/components/profiles/profile-create-dialog.tsx +++ b/ui/src/components/profiles/profile-create-dialog.tsx @@ -66,7 +66,12 @@ interface ProfileCreateDialogProps { // Common URL mistakes to warn about const PROBLEMATIC_PATHS = ['/chat/completions', '/v1/messages', '/messages', '/completions']; -export function ProfileCreateDialog({ open, onOpenChange, onSuccess }: ProfileCreateDialogProps) { +export function ProfileCreateDialog({ + open, + onOpenChange, + onSuccess, + initialMode = 'openrouter', +}: ProfileCreateDialogProps) { const createMutation = useCreateProfile(); const [activeTab, setActiveTab] = useState('basic'); const [urlWarning, setUrlWarning] = useState(null); @@ -123,18 +128,29 @@ export function ProfileCreateDialog({ open, onOpenChange, onSuccess }: ProfileCr setActiveTab('basic'); setUrlWarning(null); setShowApiKey(false); - setSelectedPreset('openrouter'); setModelSearch(''); - // Pre-fill with OpenRouter preset - const openrouterPreset = PROVIDER_PRESETS.find((p) => p.id === 'openrouter'); - if (openrouterPreset) { + + // Set initial preset based on initialMode + if (initialMode === 'normal') { + // Custom mode - clear form + setSelectedPreset('custom'); setTimeout(() => { - setValue('name', openrouterPreset.defaultProfileName); - setValue('baseUrl', openrouterPreset.baseUrl); + setValue('name', ''); + setValue('baseUrl', ''); }, 0); + } else { + // OpenRouter mode (default) + setSelectedPreset('openrouter'); + const openrouterPreset = PROVIDER_PRESETS.find((p) => p.id === 'openrouter'); + if (openrouterPreset) { + setTimeout(() => { + setValue('name', openrouterPreset.defaultProfileName); + setValue('baseUrl', openrouterPreset.baseUrl); + }, 0); + } } } - }, [open, reset, setValue]); + }, [open, reset, setValue, initialMode]); // Handle preset selection const handlePresetSelect = (presetId: string) => { @@ -244,14 +260,14 @@ export function ProfileCreateDialog({ open, onOpenChange, onSuccess }: ProfileCr type="button" onClick={() => handlePresetSelect('custom')} className={cn( - 'flex items-center gap-1.5 px-3 py-1.5 rounded-md border transition-all text-sm', + 'flex items-center gap-2 px-4 py-2 rounded-md border-2 transition-all text-sm font-medium', selectedPreset === 'custom' || getPresetsByCategory('alternative').some((p) => p.id === selectedPreset) - ? 'border-primary bg-primary/5 font-medium' - : 'border-muted hover:border-muted-foreground/30' + ? 'border-primary bg-primary/10 text-primary dark:bg-primary/20' + : 'border-dashed border-muted-foreground/40 hover:border-primary/50 hover:bg-muted/50 text-muted-foreground hover:text-foreground' )} > - + Custom @@ -260,8 +276,8 @@ export function ProfileCreateDialog({ open, onOpenChange, onSuccess }: ProfileCr {/* Show alternative presets when Custom is selected or an alternative is selected */} {(selectedPreset === 'custom' || getPresetsByCategory('alternative').some((p) => p.id === selectedPreset)) && ( -
-