import { route } from '@/constants/routes' import { useModelProvider } from '@/hooks/useModelProvider' import { cn, getProviderLogo, getProviderTitle } from '@/lib/utils' import { useNavigate, useMatches, Link } from '@tanstack/react-router' import { IconArrowLeft, IconCirclePlus } from '@tabler/icons-react' import { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog' import { Input } from '@/components/ui/input' import { Button } from '@/components/ui/button' import { useCallback, useState } from 'react' import { openAIProviderSettings } from '@/mock/data' const ProvidersMenu = ({ stepSetupRemoteProvider, }: { stepSetupRemoteProvider: boolean }) => { const { providers, addProvider } = useModelProvider() const navigate = useNavigate() const matches = useMatches() const [name, setName] = useState('') const createProvider = useCallback(() => { addProvider({ provider: name, active: true, models: [], settings: openAIProviderSettings as ProviderSetting[], api_key: '', base_url: 'https://api.openai.com/v1', }) setTimeout(() => { navigate({ to: route.settings.providers, params: { providerName: name, }, }) }, 0) }, [name, addProvider, navigate]) return (
Back
{providers.map((provider, index) => { const isActive = matches.some( (match) => match.routeId === '/settings/providers/$providerName' && 'providerName' in match.params && match.params.providerName === provider.provider ) return (
) })}
{}} > Add Provider
Add OpenAI Provider setName(e.target.value)} className="mt-2" placeholder="Enter a name for your provider" onKeyDown={(e) => { // Prevent key from being captured by parent components e.stopPropagation() }} />
) } export default ProvidersMenu