/** * WordPress Integration Card Component * Stage 4: Enhanced with sync health status and troubleshooting * Displays WordPress integration status and quick actions */ import React from 'react'; import { useNavigate } from 'react-router-dom'; import { Globe, CheckCircle, XCircle, Settings, RefreshCw, AlertCircle, ExternalLink } from 'lucide-react'; import { Card } from '../ui/card'; import Button from '../ui/button/Button'; import Badge from '../ui/badge/Badge'; interface WordPressIntegration { id: number; site: number; platform: string; is_active: boolean; sync_enabled: boolean; sync_status: 'success' | 'failed' | 'pending' | 'healthy' | 'warning' | 'error'; last_sync_at?: string; sync_error?: string | null; mismatch_count?: number; config_json?: { site_url?: string; }; } interface WordPressIntegrationCardProps { integration: WordPressIntegration | null; onConnect: () => void; onManage: () => void; onSync?: () => void; loading?: boolean; siteId?: string | number; } export default function WordPressIntegrationCard({ integration, onConnect, onManage, onSync, loading = false, siteId, }: WordPressIntegrationCardProps) { const navigate = useNavigate(); if (!integration) { return (

WordPress Integration

Connect your WordPress site to sync content

); } return (

WordPress Integration

{integration.config_json?.site_url || 'WordPress Site'}

{integration.is_active ? 'Active' : 'Inactive'}

Sync Status

{integration.sync_status === 'success' || integration.sync_status === 'healthy' ? ( ) : integration.sync_status === 'failed' || integration.sync_status === 'error' ? ( ) : integration.sync_status === 'warning' ? ( ) : ( )} {integration.sync_status === 'healthy' ? 'Healthy' : integration.sync_status === 'warning' ? 'Warning' : integration.sync_status === 'error' ? 'Error' : integration.sync_status}

Last Sync

{integration.last_sync_at ? new Date(integration.last_sync_at).toLocaleDateString() : 'Never'}

{/* Sync Health Indicators */} {(integration.mismatch_count !== undefined && integration.mismatch_count > 0) && (
{integration.mismatch_count} sync mismatch{integration.mismatch_count !== 1 ? 'es' : ''} detected
{siteId && ( )}
)} {integration.sync_error && (

Sync Error

{integration.sync_error}

)}
{siteId && ( )} {onSync && ( )}
); }