| import { CheckCircle2, ExternalLink, XCircle } from 'lucide-react' | |
| export default function VercelSyncStatus({ t, result }) { | |
| if (!result) { | |
| return null | |
| } | |
| return ( | |
| <div className={`p-6 rounded-xl border ${result.success ? 'bg-emerald-500/10 border-emerald-500/20' : 'bg-destructive/10 border-destructive/20'} animate-in fade-in slide-in-from-right-4`}> | |
| <div className="flex items-start gap-4"> | |
| {result.success ? ( | |
| <div className="p-2 bg-emerald-500 text-white rounded-full shadow-lg shadow-emerald-500/30"> | |
| <CheckCircle2 className="w-6 h-6" /> | |
| </div> | |
| ) : ( | |
| <div className="p-2 bg-destructive text-white rounded-full shadow-lg shadow-destructive/30"> | |
| <XCircle className="w-6 h-6" /> | |
| </div> | |
| )} | |
| <div className="space-y-1"> | |
| <h3 className={`font-semibold text-lg ${result.success ? 'text-emerald-500' : 'text-destructive'}`}> | |
| {result.success ? t('vercel.syncSucceeded') : t('vercel.syncFailedLabel')} | |
| </h3> | |
| <p className="text-sm opacity-90">{result.message}</p> | |
| {result.deployment_url && ( | |
| <div className="pt-3 mt-3 border-t border-emerald-500/20"> | |
| <a href={`https://${result.deployment_url}`} target="_blank" rel="noopener noreferrer" className="inline-flex items-center gap-1 text-sm font-medium hover:underline"> | |
| {t('vercel.openDeployment')} <ExternalLink className="w-3 h-3" /> | |
| </a> | |
| </div> | |
| )} | |
| </div> | |
| </div> | |
| </div> | |
| ) | |
| } | |