import { useState } from 'react'; import { CheckCircle2, Circle, SkipForward, ExternalLink, FolderOpen, Loader2, } from 'lucide-react'; import { SOURCE_CATALOG } from '../../types/connectors'; import { connectSource } from '../../lib/connectors-api'; import type { ConnectRequest, ConnectorMeta } from '../../types/connectors'; // --------------------------------------------------------------------------- // Types // --------------------------------------------------------------------------- type SourceState = 'pending' | 'connecting' | 'connected' | 'skipped' | 'error'; interface SourceEntry { id: string; state: SourceState; error?: string; } // --------------------------------------------------------------------------- // Sidebar item // --------------------------------------------------------------------------- function SidebarItem({ label, state, active, onClick, }: { label: string; state: SourceState; active: boolean; onClick: () => void; }) { return ( ); } // --------------------------------------------------------------------------- // Auth panels // --------------------------------------------------------------------------- function FilesystemPanel({ displayName, onConnect, onSkip, isConnecting, }: { displayName: string; onConnect: (req: ConnectRequest) => void; onSkip: () => void; isConnecting: boolean; }) { const [path, setPath] = useState(''); return (

Enter the path to your local {displayName} folder.

setPath(e.target.value)} placeholder="/Users/you/Documents/..." className="flex-1 px-3 py-2 rounded-lg text-sm outline-none" style={{ background: 'var(--color-surface)', border: '1px solid var(--color-border)', color: 'var(--color-text)', }} />
); } function OAuthPanel({ displayName, authUrl, onConnect, onSkip, isConnecting, }: { displayName: string; authUrl?: string; onConnect: (req: ConnectRequest) => void; onSkip: () => void; isConnecting: boolean; }) { const [token, setToken] = useState(''); const [phase, setPhase] = useState<'start' | 'paste'>('start'); const openBrowser = () => { if (authUrl) { window.open(authUrl, '_blank'); } setPhase('paste'); }; return (
{phase === 'start' ? ( <>

Authorize OpenJarvis to access your {displayName} account.

) : ( <>

After authorizing, paste the token or code below.