import { ArrowRight, CheckCircle2, Cloud, ExternalLink, RefreshCw } from 'lucide-react'
import clsx from 'clsx'
export default function VercelSyncForm({
t,
syncStatus,
pollPaused,
pollFailures,
onManualRefresh,
preconfig,
vercelToken,
setVercelToken,
projectId,
setProjectId,
teamId,
setTeamId,
saveCredentials,
setSaveCredentials,
configSource,
onConfigSourceChange,
localConfig,
localConfigName,
localConfigError,
onLocalConfigSelect,
onLocalConfigClear,
loading,
onSync,
}) {
return (
{t('vercel.title')}
{syncStatus && (
{syncStatus.synced
? t('vercel.statusSynced')
: syncStatus.has_synced_before
? t('vercel.statusNotSynced')
: t('vercel.statusNeverSynced')}
)}
{t('vercel.description')}
{pollPaused && (
{t('vercel.pollPaused', { count: pollFailures })}
)}
{syncStatus?.last_sync_time && (
{t('vercel.lastSyncTime', { time: new Date(syncStatus.last_sync_time * 1000).toLocaleString() })}
)}
{syncStatus?.draft_differs && (
{t('vercel.draftDiffers')}
)}
{configSource === 'local' && (
onLocalConfigSelect(e.target.files?.[0])}
className="block w-full text-sm file:mr-3 file:py-2 file:px-3 file:rounded-lg file:border-0 file:bg-secondary file:text-secondary-foreground hover:file:bg-secondary/80"
/>
{localConfigName && (
{t('vercel.localConfigLoaded', { name: localConfigName })}
)}
{!localConfig && !localConfigError && (
{t('vercel.localConfigHint')}
)}
{localConfigError && (
{localConfigError}
)}
)}
setVercelToken(e.target.value)}
/>
{preconfig?.has_token && !vercelToken && (
)}
setTeamId(e.target.value)}
/>
{t('vercel.redeployHint')}
)
}