import React from 'react';
import { View, Text, StyleSheet, ActivityIndicator } from 'react-native';
import { SyncEngine } from '../core/SyncEngine';
import { useSyncEngine } from '../hooks/useSyncEngine';
import { SyncStatus } from '../types';
export interface SyncStatusBadgeProps {
syncEngine: SyncEngine;
style?: any;
}
/**
* Badge component showing current sync status
*
* @example
* ```typescript
*
* ```
*/
export const SyncStatusBadge: React.FC = ({ syncEngine, style }) => {
const { syncStatus, pendingChanges, isSyncing } = useSyncEngine(syncEngine);
const getStatusColor = () => {
switch (syncStatus) {
case SyncStatus.SYNCING:
return '#3b82f6'; // blue
case SyncStatus.ERROR:
return '#ef4444'; // red
default:
return pendingChanges > 0 ? '#f59e0b' : '#10b981'; // amber or green
}
};
const getStatusText = () => {
if (isSyncing) return 'Syncing...';
if (syncStatus === SyncStatus.ERROR) return 'Sync Error';
if (pendingChanges > 0) return `${pendingChanges} pending`;
return 'Synced';
};
return (
{isSyncing && }
{getStatusText()}
);
};
const styles = StyleSheet.create({
container: {
flexDirection: 'row',
alignItems: 'center',
paddingHorizontal: 12,
paddingVertical: 6,
borderRadius: 16,
},
spinner: {
marginRight: 6,
},
text: {
color: '#fff',
fontSize: 12,
fontWeight: '600',
},
});